正则表达式 - 匹配返回无。我哪里错了?

时间:2012-10-22 15:25:59

标签: python regex

>>> import re
>>> s = 'this is a test'
>>> reg1 = re.compile('test$')
>>> match1 = reg1.match(s)
>>> print match1
None
在Kiki中的

与s结束时的测试相匹配。我错过了什么? (我也试过re.compile(r'test$')

3 个答案:

答案 0 :(得分:23)

使用

match1 = reg1.search(s)

代替。仅{+ 1}}函数 匹配字符串的开头...请参阅文档here

  

Python提供了两种基于正则表达式的不同原语操作:match仅在字符串的开头检查匹配,而re.match()检查字符串中任何位置的匹配(这就是Perl默认情况下)。

答案 1 :(得分:1)

您的正则表达式匹配完整字符串。您可以使用搜索代替无提及,或者您可以更改正则表达式以匹配完整字符串:

'^this is a test$'

或者稍微难以阅读但有些不那么无用:

'^t[^t]*test$'

这取决于你想要做什么。

答案 2 :(得分:0)

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

因此,如果要从True获得布尔值(Falsematch),则必须检查结果是否为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!")