Escaping regex string in Python
我想使用来自用户的输入作为搜索某些文本的regex模式。它可以工作,但是我如何处理用户在regex中放置有意义的字符的情况?例如,用户希望搜索单词
为此,请使用
4.2.3
escape(string)
Return string with all non-alphanumerics backslashed; this is useful if you want to match an arbitrary literal string that may have regular expression metacharacters in it.
一个简单的示例,搜索所提供的字符串中出现的任意字符串(可选后跟"s"),并返回match对象。
1 2 3 | def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text) |
您可以使用re.escape():
re.escape(string)
Return string with all non-alphanumerics backslashed; this is useful if you want to match an arbitrary literal string that may have regular expression metacharacters in it.
1 2 3 | >>> import re >>> re.escape('^a.*$') '\\^a\\.\\*\\$' |
不幸的是,
1 2 | >>> re.sub('a', re.escape('_'), 'aa') '\\_\\_' |
解决方法是将替换件放入lambda中:
1 2 | >>> re.sub('a', lambda _: '_', 'aa') '__' |
因为lambda的返回值被
请试一试:
Q和E作为锚
将或条件与完整的单词或regex匹配。
引用链接:如何匹配regex中包含特殊字符的整个单词