我该如何声明正则表达式?
mergedData = re.sub(r'\$(.*?)\$', readFile, allData)
Run Code Online (Sandbox Code Playgroud)
我有点想知道为什么会这样.我以为我需要使用r''传递正则表达式.
mergedData = re.sub("\$(.*?)\$", readFile, allData)
Run Code Online (Sandbox Code Playgroud)
"\$"在这种情况下会导致什么结果?为什么?我原以为"$".
我认为我需要使用r''来传递正则表达式.
r在字符串文字表示原始字符串之前,这意味着通常的转义序列,例如\n或\r不再被视为换行符或回车符,而只是\后跟n或r.要指定a \,您只需要\在原始字符串文字中,而您需要\\在普通字符串文字中将其加倍.这就是为什么通常情况下原始字符串用于指定正则表达式1.它减少了阅读代码时的困惑.如果使用普通的字符串文字,则必须进行两次转义:一次用于正常的字符串文字转义,第二次用于在正则表达式中转义.
"\$"这种情况会导致什么结果?为什么?我原以为"$"
在Python普通字符串文字中,如果\后面没有转义序列,\则保留它.因此"\$"结果\如下$.
此行为与C/C++或JavaScript处理类似情况的方式略有不同:\被认为是下一个字符的转义,只剩下下一个字符.所以"\$"在那些语言中将被解释为$.
脚注
1:Python中的原始字符串设计存在一个小缺陷,但是:为什么Python的原始字符串文字不能以单个反斜杠结尾?
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |