Regex 为什么这个字符串与模式不匹配
在下面的示例中,我希望单词Regex 为什么这个字符串与模式不匹配,regex,python-3.x,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(m
'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())
为什么文本与模式不匹配?在正则表达式引擎看到并将其解释为分词之前,模式字符串中的
\b
将被Python解释为ASCII退格字符('\x08'
)。为了停止第一次解释,使用一个“原始”字符串,在开头引号前加上r
(你可以用一个额外的反斜杠来代替反斜杠,但这通常比原始字符串更难看,更不容易理解):
请注意,
7
周围的括号和[8-9]
中的破折号是不必要的(您可以只使用r'\b7[89]{2}\b'
)。使用r'\b[7][8-9]{2}\b'
来查找单词边界,然后是一个7
,后跟两个数字(或者8
或者9
)然后你想再找一个词边界吗?@RNar这就对了,谢谢@RNar:当键入反斜杠时,请使用双斜杠,然后是反斜杠,然后再是双斜杠。噢,讽刺的是,在谈论转义黑斜杠时,我没有意识到我需要转义反斜杠…:/
r'\b[7][8-9]{2}\b'