在我有一个正则表达式是这样的:如果字包含酒吧,巴兹或坏python的回复:如果正则表达式中包含返回True串
regexp = u'ba[r|z|d]'
功能必须返回true。 总之,我需要对正则表达式的模拟Python的
'any-string' in 'text'
我怎样才能实现呢?谢谢!
在我有一个正则表达式是这样的:如果字包含酒吧,巴兹或坏python的回复:如果正则表达式中包含返回True串
regexp = u'ba[r|z|d]'
功能必须返回true。 总之,我需要对正则表达式的模拟Python的
'any-string' in 'text'
我怎样才能实现呢?谢谢!
import re
word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(word):
print 'matched'
我正在研究类似的情况,我想搜索一个确切的字符串('xyz'),并且想知道哪一个是更有效的方法来做到这一点,我应该在给定文本中使用python的'xyz'还是使用' re.compile(r'xyz')。search(given_text)'? – bawejakunal
'[]'括号中包含一个字符类,所以你的re也匹配:>>> word ='ba |'; regexp.search(word) <_sre.SRE_Match object at 0x101030b28>。您可以删除所有管道符号。 – radtek
Match
对象始终为真,如果不匹配则返回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
。
你可以做这样的事情:
使用搜索将返回一个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
这里有一个功能,你想要做什么:
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
只需使用''布尔(re.search( 'BA [RZD]',“sometext “))''。 –