Python中的正则表达式引用

his*_*amp 2 python regex

我该如何声明正则表达式?

mergedData = re.sub(r'\$(.*?)\$', readFile, allData)
Run Code Online (Sandbox Code Playgroud)

我有点想知道为什么会这样.我以为我需要使用r''传递正则表达式.

mergedData = re.sub("\$(.*?)\$", readFile, allData)
Run Code Online (Sandbox Code Playgroud)

"\$"在这种情况下会导致什么结果?为什么?我原以为"$".

nha*_*tdh 6

我认为我需要使用r''来传递正则表达式.

r在字符串文字表示原始字符串之前,这意味着通常的转义序列,例如\n\r不再被视为换行符或回车符,而只是\后跟nr.要指定a \,您只需要\在原始字符串文字中,而您需要\\在普通字符串文字中将其加倍.这就是为什么通常情况下原始字符串用于指定正则表达式1.它减少了阅读代码时的困惑.如果使用普通的字符串文字,则必须进行两次转义:一次用于正常的字符串文字转义,第二次用于在正则表达式中转义.

"\$"这种情况会导致什么结果?为什么?我原以为"$"

在Python普通字符串文字中,如果\后面没有转义序列,\则保留它.因此"\$"结果\如下$.

此行为与C/C++或JavaScript处理类似情况的方式略有不同:\被认为是下一个字符的转义,只剩下下一个字符.所以"\$"在那些语言中将被解释为$.

脚注

1:Python中的原始字符串设计存在一个小缺陷,但是:为什么Python的原始字符串文字不能以单个反斜杠结尾?