用Python转义正则字符串

用Python转义正则字符串

我想使用用户输入作为对某些文本进行搜索的regex模式。它可以工作,但是如何处理用户在regex中放置有意义的字符的情况?例如,用户希望搜索Word。(s)*regex引擎将采取(s)作为一个团体。我要把它当作一根绳子"(s)"..我能跑replace在用户输入和替换(带着\()带着\)但问题是,我需要对每一个可能的正则表达式符号进行替换。你知道更好的方法吗?



慕码人2483693
浏览 857回答 3
3回答

宝慕林4294392

不幸的是,re.escape()不适合替换字符串:>>> re.sub('a', re.escape('_'), 'aa')'\\_\\_'一种解决办法是将替代物放入一个λ中:>>> re.sub('a', lambda _: '_', 'aa')'__',因为lambda的返回值被处理为re.sub()作为文字字符串。

MM们

使用re.escape()职能:4.2.3 re模块内容转义(字符串)返回带有所有非字母数字反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,这是非常有用的。一个简单的例子,搜索任何可选的字符串后面跟着‘s’,并返回Match对象。def simplistic_plural(word, text):     word_or_plural = re.escape(word) + 's?'     return re.match(word_or_plural, text)
打开App,查看更多内容
随时随地看视频慕课网APP