Python转义正则表达式特殊字符如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (504)

Python有一个函数可以用来在正则表达式中转义特殊字符吗?

例如,I'm "stuck" :\应该成为I\'m \"stuck\" :\\

提问于
用户回答回答于

使用re.exe

re.escape(string)
>>> re.escape('\ a.*$')
'\\\\\\ a\\.\\*\\$'
>>> print(re.escape('\ a.*$'))
\\\ a\.\*\$
>>> re.escape('www.stackoverflow.com')
'www\\.stackoverflow\\.com'
>>> print(re.escape('www.stackoverflow.com'))
www\.stackoverflow\.com

请参阅:http://docs.python.org/library/re.html#module-contents

在此重复一遍:

re.escape(串) 返回所有非字母数字字符串的字符串; 如果你想匹配一个可能有正则表达式元字符的任意文字字符串,这很有用。

用户回答回答于

我很惊讶没有人提到使用正则表达式re.sub():

import re
print re.sub(r'([\"])',    r'\\\1', 'it\'s "this"')  # it's \"this\"
print re.sub(r"([\'])",    r'\\\1', 'it\'s "this"')  # it\'s "this"
print re.sub(r'([\" \'])', r'\\\1', 'it\'s "this"')  # it\'s\ \"this\"

重要的事情要注意:

  • 搜索模式中,包括\要查找的字符。你会使用\逃脱你的角色,所以你需要逃避为好。
  • 将括号放在搜索模式的周围,例如([\"]),以便替换 模式可以使用找到的字符\。(这就是 \1:使用第一个加括号的组的值。)
  • r前面的r'([\"])'意味着它是一个原始字符串。原始字符串使用不同的规则来转义反斜杠。要([\"])以纯字符串形式写入,需要将所有反斜杠加倍并写入'([\\"])'。在编写正则表达式时,原始字符串更友好。
  • 替换模式中,需要进行转义\以将其与替换组之前的反斜杠区分开,例如\1,因此r'\\\1'。写 的是作为一个普通的字符串,你需要'\\\\\\1'

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励