我希望单词'789'
与我的模式'\b[7][8-9]{2}\b'
匹配,如下例所示:
def test_4(self):
text = 'asdf 2345 gfdf 44 dfg 79878 dsfg 78998 sdfg 789 7989 '
pattern = '\b[7][8-9]{2}\b'
match = re.search(pattern, text)
if match:
print(pattern)
print(match.group())
为什么文字与模式不匹配?
答案 0 :(得分:2)
在正则表达式引擎可以看到它们并将它们解释为分词符之前,Python将您的模式字符串中的\b
解释为ASCII退格符('\x08'
)。为了停止第一个解释,使用一个“原始”字符串,在前面加上r
开头的引号(你可以用一个额外的一个来逃避反斜杠,但这通常比原始的更难理解字符串):
r'\b[7][8-9]{2}\b'
请注意,7
周围的括号和[8-9]
中的短划线是不必要的(您可以使用r'\b7[89]{2}\b'
)。