为什么这个字符串与模式不匹配

时间:2015-10-23 21:06:51

标签: regex python-3.x

我希望单词'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())

为什么文字与模式不匹配?

1 个答案:

答案 0 :(得分:2)

在正则表达式引擎可以看到它们并将它们解释为分词符之前,Python将您的模式字符串中的\b解释为ASCII退格符('\x08')。为了停止第一个解释,使用一个“原始”字符串,在前面加上r开头的引号(你可以用一个额外的一个来逃避反斜杠,但这通常比原始的更难理解字符串):

r'\b[7][8-9]{2}\b'

请注意,7周围的括号和[8-9]中的短划线是不必要的(您可以使用r'\b7[89]{2}\b')。