为了账号安全,请及时绑定邮箱和手机立即绑定

用Python转义正则字符串

用Python转义正则字符串

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

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

不幸的是,re.escape()不适合替换字符串:

>>> re.sub('a', re.escape('_'), 'aa')'\\_\\_'

一种解决办法是将替代物放入一个λ中:

>>> re.sub('a', lambda _: '_', 'aa')'__'

,因为lambda的返回值被处理为re.sub()作为文字字符串。


查看完整回答
反对 回复 2019-06-24
?
MM们

TA贡献1886条经验 获得超2个赞

使用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)


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 854 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信