正则表达式中反斜杠的混乱

问题描述 投票:0回答:1

我试图理解在以下情况下如何解释正则表达式

import re
pattern = 'word\\\n'
sentence = 'This is a word\n.'
match = re.search(pattern, sentence)
match.group()

匹配成功

'word\n'

根据我的理解,根据这篇post,模式首先会被解释为

'word'+ backslash +'newline'
,然后
re.search
会在句子中搜索上面的模式。但是,句子中的
'word\n'
不应与上面的模式匹配,因为
'word\n'
会被解释为
'word'+'newline'

任何人都可以帮我理解其中的细微差别吗?

我尝试在线搜索结果,但找不到任何特定于此问题的内容。

python regex escaping
1个回答
0
投票

\
对于 Python 解释器 对于正则表达式解析器具有特殊含义。听起来你已经明白了:

pattern = 'word\\\n'

生成一个六字符的字符串,其中最后两个字符是

\
和换行符。该字符串又被解释为正则表达式。

在正则表达式的上下文中,

\
可用于引入特殊字符类(例如
\d
),但如果它在非字母数字字符之前使用,则它可以用作转义。由于换行符是非字母数字字符,因此
\
+ (换行符) 是与换行符匹配的有效正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.