我有一个像这样的正则表达式:
regexp = u'ba[r|z|d]'
如果单词包含 bar , baz 或错误,则函数必须返回True。 简而言之,我需要用于Python的正则表达式模拟
'any-string' in 'text'
我怎么能意识到这一点?谢谢!
答案 0 :(得分:112)
import re
word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(word):
print 'matched'
答案 1 :(得分:81)
迄今为止最好的是
bool(re.search('ba[rzd]', 'foobarrrr'))
返回True
答案 2 :(得分:13)
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
比匹配不起作用。因此,更适合使用re.search
。
答案 3 :(得分:1)
这是一个可以满足您需求的功能:
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 :(得分:0)
您可以这样做:
如果匹配搜索字符串,则使用搜索将返回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