python的re:如果正则expression式包含在string中,则返回True
我有一个像这样的正则expression式:
regexp = u'ba[r|z|d]'
如果单词包含bar , baz或bad ,则函数必须返回True。 总之,我需要Python的正则expression式模拟
'any-string' in 'text'
我怎么能意识到这一点? 谢谢!
import re word = 'fubar' regexp = re.compile(r'ba[rzd]') if regexp.search(word): print 'matched'
最好的一个是
bool(re.search('ba[rzd]', 'foobarrrr'))
返回True
Match
对象始终为真,如果不匹配则返回None
。 只要testing真实性。
码:
>>> st = 'bar' >>> m = re.match(r"ba[r|z|d]",st) >>> if m: ... m.group(0) ... 'bar'
输出= bar
如果你想要search
function
>>> 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
。
你可以做这样的事情:
使用search将返回一个SRE_match对象,如果它匹配您的searchstring。
>>> 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()
如果不是,则返回None
Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> n.group() AttributeError: 'NoneType' object has no attribute 'group'
而只是打印它再次演示:
>>> print n None
这是一个你想要的function:
import re def is_match(regex, text): pattern = re.compile(regex, text) return pattern.search(text) is not None
正则expression式search方法在成功时返回对象,如果在string中找不到模式,则返回None。 考虑到这一点,只要search给我们一些东西,我们就返回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