Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为什么这个字符串与模式不匹配_Regex_Python 3.x - Fatal编程技术网

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'