我不明白为什么跟随re.sub的行为。任何人都可以解释如何在re.sub中处理字符串?为什么声明2不匹配&替换?感谢
1. >>> re.sub(r'\$abc', 'ABC', r'\$abcdefg')
'\\ABCdefg'
2. >>> re.sub(r'\\$abc', 'ABC', r'\\$abcdefg')
'\\\\$abcdefg'
3. >>> r'\\$abc' in r'\\$abcdefg'
True
4. >>> re.sub(r'\\\$abc', 'ABC', r'\\\$abcdefg')
'\\\\ABCdefg'
答案 0 :(得分:0)
这是因为在模式( first arg )中,双反斜杠\\
只变为一个,因此不会匹配。
这是因为当正则表达式引擎看到一个斜杠\
时,它会自动转义仅在一个文字\\
中生成\
的下一个字符。
要使正则表达式匹配两个斜杠,您应该添加两个斜杠:
2. >>> re.sub(r'\\\\\$abc', 'ABC', r'\\\$abcdefg')
'\ABCdefg'
参考:re.sub
希望它有所帮助。