python的re:如果正则expression式包含在string中,则返回True

我有一个像这样的正则expression式:

regexp = u'ba[r|z|d]' 

如果单词包含barbazbad ,则函数必须返回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

如果你想要searchfunction

 >>> 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