正则表达式匹配&替换原始字符串

时间:2016-03-17 23:27:19

标签: python regex

我不明白为什么跟随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'

1 个答案:

答案 0 :(得分:0)

这是因为在模式( first arg )中,双反斜杠\\只变为一个,因此不会匹配。

这是因为当正则表达式引擎看到一个斜杠\时,它会自动转义仅在一个文字\\中生成\的下一个字符。

要使正则表达式匹配两个斜杠,您应该添加两个斜杠:

2. >>> re.sub(r'\\\\\$abc', 'ABC', r'\\\$abcdefg')
'\ABCdefg'

参考:re.sub

希望它有所帮助。