You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何在正则匹配的特殊字符前添加转义符?

Python 给指定特殊字符添加转义符的简便实现

直接用Python的re模块就能搞定,核心是用re.sub()做正则替换,配合lambda表达式给每个匹配到的特殊字符加转义符。

核心代码示例

如果你要给每个单独的特殊字符都加转义(比如**会变成\*\*),可以这么写:

import re

original_str = "My name is * and he is *"
# 去掉原正则里的+,匹配单个特殊字符
special_chars_pattern = r'[-._!"`\'#%&,:;<>=@{}~$\()*+\/\\?\[\]^|]'

# 对每个匹配到的字符前加反斜杠
escaped_str = re.sub(special_chars_pattern, lambda match: f'\\{match.group()}', original_str)
print(escaped_str)
# 输出:My name is \* and he is \*

关于正则里的+

你原正则里用了+,它会把连续的特殊字符当成一个整体处理。比如如果原字符串是"My name is ** and he is *",用带+的正则:

special_chars_pattern = r'[-._!"`\'#%&,:;<>=@{}~$\()*+\/\\?\[\]^|]+'
escaped_str = re.sub(special_chars_pattern, lambda match: f'\\{match.group()}', original_str)
# 输出:My name is \** and he is \*

如果需要给每个连续的特殊字符单独加转义,就去掉+即可,根据你的实际需求调整。

为什么不用re.escape()?

re.escape()会自动转义所有正则元字符,但它的转义范围比你指定的要广(比如会转义所有正则里有特殊意义的字符,而非你自定义的列表),所以不适合你的场景,还是用自定义正则+re.sub()更精准。

内容的提问来源于stack exchange,提问作者SingSing Hải

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:10:55