在Python中转义正则表达式字符串
我想使用用户的输入作为正则表达式来搜索某些文本。 它的工作原理,但我如何处理用户在正则表达式中有意义的字符? 例如,用户想要搜索Word (s) :正则表达式引擎将把这个(s)作为一个组。 我希望它把它看作一个字符串"(s)" 。 我可以运行replace用户输入和替换(与\(和) \)但问题是我将需要做替换每一个可能的正则表达符号。 你知道更好的方法吗? 
  re.escape()使用re.escape()函数: 
  4.2.3 re模块内容 
逃生(字符串)
返回所有非字母数字的字符串; 如果你想匹配一个可能有正则表达式元字符的任意文字字符串,这是非常有用的。
一个简单的例子,搜索任何提供的字符串(可选的后跟“s”),并返回匹配对象。
 def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text) 
你可以使用re.escape() :
re.escape(string)返回所有非字母数字的字符串; 如果你想匹配一个可能有正则表达式元字符的任意文字字符串,这是非常有用的。
 >>> import re >>> re.escape('^a.*$') '\\^a\\.\\*\\$' 
 不幸的是, re.escape()不适合替换字符串: 
 >>> re.sub('a', re.escape('_'), 'aa') '\\_\\_' 
一个解决方案是把替换放在一个lambda:
 >>> re.sub('a', lambda _: '_', 'aa') '__' 
 因为lambda的返回值被re.sub()视为一个文字字符串。 
请试试看:
\ Q和\ E作为锚点
把一个或条件匹配一个完整的单词或正则表达式。
参考链接: 如何匹配正则表达式中包含特殊字符的整个单词