如何使用正则表达式匹配转义字符

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

我正在尝试使用正则表达式来接受包含转义序列的字符串。

text = '"match""'
x = re.match('"(\\n|\\"|\\\\|[^"\n])*"',text)
print(x.group(0))

输出:

"match""

所需输出:

"match"

由于某种原因,它与最后一个双引号匹配,而它应该与第一个未转义的双引号匹配,我不明白为什么。因为它应该只接受不在列出的转义序列中的任何内容,即不是双引号或换行符的内容。

我也尝试过非贪婪。通过这个测试

text = '"match\\""'
x = re.match('"(\\n|\\"|\\\\|[^"\n])*?"',text)
print(x.group(0))

但是正如您可能猜到的那样,无论它是否具有转义序列,它都会匹配第一个双引号。

在过去,我通过随机输入不同的组合或添加更多反斜杠,设法通过反复试验来解决这个问题,但我宁愿了解发生了什么以及为什么会失败,而是随机地进行处理。

python regex escaping double-quotes
1个回答
0
投票

普通字符串中的双反斜杠会变成正则表达式模式中的单反斜杠。例如,

'\\"'
->
\"
。正则表达式引擎可能被编码为忽略
\"
中无意义的反斜杠,只匹配任何
"

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