在下面的示例中,我期望单词'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())
为什么文本与模式不匹配?
发布于 2015-10-23 21:18:53
您在模式字符串中的\b
正在被Python解释为ASCII字符('\x08'
),然后regex引擎才能看到它们并将它们解释为一个单词中断。为了停止第一个解释,使用一个" raw“字符串,在开头的引号前加上一个r
(您可以用一个额外的反斜杠来转义反斜杠,但这通常比原始字符串更丑,也更不容易理解):
r'\b[7][8-9]{2}\b'
注意,7
周围的括号和[8-9]
中的破折号是不必要的(您可以只使用r'\b7[89]{2}\b'
)。
https://stackoverflow.com/questions/33311402
复制相似问题