问题:python的re:如果字符串包含正则表达式模式,则返回True
我有一个这样的正则表达式:
regexp = u'ba[r|z|d]'
如果单词包含bar,baz或bad,则函数必须返回True 。简而言之,我需要python的regexp模拟
'any-string' in 'text'
我怎么知道呢?谢谢!
回答 0
import re
word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(word):
print 'matched'
回答 1
到目前为止最好的是
bool(re.search('ba[rzd]', 'foobarrrr'))
返回真
回答 2
Match
对象始终为true,None
如果不匹配,则返回。只是测试真实性。
码:
>>> st = 'bar'
>>> m = re.match(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
...
'bar'
输出= bar
如果您想要search
功能
>>> st = "bar"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m is not None:
... m.group(0)
...
'bar'
如果regexp
找不到
>>> st = "hello"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
... else:
... print "no match"
...
no match
如@bukzor所述,如果st = foo bar
than match将不起作用。因此,它更适合使用re.search
。
回答 3
这是一个执行您想要的功能的函数:
import re
def is_match(regex, text):
pattern = re.compile(regex, text)
return pattern.search(text) is not None
正则表达式搜索方法成功返回一个对象,如果在字符串中未找到模式,则返回None。考虑到这一点,只要搜索为我们提供了一些回报,我们就会返回True。
例子:
>>> is_match('ba[rzd]', 'foobar')
True
>>> is_match('ba[zrd]', 'foobaz')
True
>>> is_match('ba[zrd]', 'foobad')
True
>>> is_match('ba[zrd]', 'foobam')
False
回答 4
您可以执行以下操作:
如果搜索与您的搜索字符串匹配,则使用搜索将返回SRE_match对象。
>>> import re
>>> m = re.search(u'ba[r|z|d]', 'bar')
>>> m
<_sre.SRE_Match object at 0x02027288>
>>> m.group()
'bar'
>>> n = re.search(u'ba[r|z|d]', 'bas')
>>> n.group()
如果没有,它将返回无
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
n.group()
AttributeError: 'NoneType' object has no attribute 'group'
只是打印它以再次演示:
>>> print n
None
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。