Re.match()总是返回none

Dio*_*lor 6 python regex

我觉得有点愚蠢,但它不起作用:

import re

a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"

print re.match(ur'/(wekjb|ABB)/',a)
if re.match(ur'/(wekjb|ABB)/',a):
    print 'success'
Run Code Online (Sandbox Code Playgroud)

我有ur'用户给出的a是unicode.我想打印成功,如果wekjbABB在字符串中,但我总是得到None的结果match.

iCo*_*dez 21

re.match隐含地锚定到字符串的开头.如果要在字符串中搜索可以在其中的任何位置的子字符串,则需要使用re.search:

import re

a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"

print re.search(ur'(wekjb|ABB)',a).group()
if re.search(ur'(wekjb|ABB)',a):
    print 'success'
Run Code Online (Sandbox Code Playgroud)

输出:

wekjb
success
Run Code Online (Sandbox Code Playgroud)

此外,Python Regexes不需要/在开头和结尾都有.

最后,我添加.group()到行尾,print因为我认为这就是你想要的.否则,你会得到一些<_sre.SRE_Match object at 0x01812220>不太有用的东西.

  • @TravisGriggs-不,很好。最好是技术性的。我调整了帖子,并添加了链接以供进一步参考。 (2认同)