Python 3.x 对“r”(原始字符串)功能的混淆

Python 3.x 对“r”(原始字符串)功能的混淆,python-3.x,Python 3.x,对r的目的感到困惑。据我所知,作为普通字符阅读比作为转义字符使用更有帮助 我尝试了如下多个代码,所有代码都给出了相同的输出。这让我对r的真正解释感到困惑。虽然我同意前三行代码,但第四行是我感到困惑的地方 1.re.sub("n\'t", " not", " i am n't happy") 2.re.sub("n\'t", " not", " i am n\'t happy") 3.re.sub(r"n\'t", " not", " i am n\'t happy") 4.re.sub(r"n\

对r的目的感到困惑。据我所知,作为普通字符阅读比作为转义字符使用更有帮助

我尝试了如下多个代码,所有代码都给出了相同的输出。这让我对r的真正解释感到困惑。虽然我同意前三行代码,但第四行是我感到困惑的地方

1.re.sub("n\'t", " not", " i am n't happy")
2.re.sub("n\'t", " not", " i am n\'t happy")
3.re.sub(r"n\'t", " not", " i am n\'t happy")
4.re.sub(r"n\'t", " not", " i am n't happy")
以上四项的结果是:'

“我不高兴”

import re

re.sub(r"n\'t", " not", " i am n't happy")
鉴于我使用了r,我希望反斜杠被视为字符,而不是转义字符

实际产量 “我不高兴”

import re

re.sub(r"n\'t", " not", " i am n't happy")
预期产量
“我不高兴”

问题是有两层-转义:字符串文本和正则表达式。在这两种情况下,“都没有特殊的含义,只是被当作”

在这里使用r的作用是跳过第一个字符串文本转义,这样字符串中就包含了一个文本,但是正则表达式会看到字符串\'并将其视为'

所以这四个都归结为“不”替换为“不”

您仍然需要双反斜杠来匹配文字反斜杠