我想使用来自用户的输入作为正则表达式模式来搜索一些文本。它可以工作,但我如何处理用户将有意义的字符放在正则表达式中的情况?
例如,用户想要搜索单词(s)
:正则表达式引擎将把(s)
作为一个组。我希望它像string "(s)"
一样对待它。我可以在用户输入上运行replace
,并用\(
替换(
,用\)
替换)
,但问题是我需要替换每个可能的正则表达式符号。
你知道更好的方法吗?
发布于 2017-02-24 02:06:32
不幸的是,re.escape()
不适合替换字符串:
>>> re.sub('a', re.escape('_'), 'aa')
'\\_\\_'
一种解决方案是将替换放在lambda中:
>>> re.sub('a', lambda _: '_', 'aa')
'__'
因为re.sub()
将lambda的返回值视为文字字符串。
发布于 2017-09-23 22:41:36
请试一试:
\Q和\E作为锚点
输入一个或条件以匹配一个完整的单词或正则表达式。
参考链接:How to match a whole word that includes special characters in regex
https://stackoverflow.com/questions/280435
复制相似问题