Re.match()返回始终为非

2024-06-01 00:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得有点蠢,但没用:

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'

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


Tags: importrematchprinturabbbwewjrbw
2条回答

^{}隐式定位到字符串的开头。如果要在字符串中搜索可以位于其中任何位置的子字符串,则需要使用^{}

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'

输出:

wekjb
success

另外,Python正则表达式不需要在开始和结束处有一个/

最后,我将.group()添加到print行的末尾,因为我认为这是您想要的。否则,您将得到类似<_sre.SRE_Match object at 0x01812220>的内容,这并不太有用。

因为match方法返回None如果它找不到预期的模式,如果它找到模式,它将返回类型为_sre.SRE_match的对象。

所以,如果你想从match得到布尔值(TrueFalse),你必须检查结果是否是None

你可以检查文本是否匹配如下:

string_to_evaluate = "Your text that needs to be examined"
expected_pattern = "pattern"

if re.match(expected_pattern, string_to_evaluate) is not None:
    print("The text is as you expected!")
else:
    print("The text is not as you expected!")

相关问题 更多 >