如何用Python正则移除花括号内数字?匹配问题求解
正则匹配方案解决花括号内数字移除问题
最简解决方案
直接定位花括号内的数字进行替换是最高效的,没必要绕弯匹配前后内容。用以下正则就能搞定:
- 匹配规则:
`(\{)\d+(\})` - 替换为:
`$1$2`
拿你的输入abc{123}hij举例,用这个规则替换后直接得到abc{}hij,完全符合预期输出。
说说你之前的问题
你用的(.+?\{)*(\}.+)*会出现空匹配,根源是*表示「匹配0次或多次」,当正则找不到对应内容时就会匹配空字符串。而且这个规则逻辑本身就有问题——它要么匹配{之前的内容,要么匹配}之后的内容,根本没法定位到花括号里的数字,自然达不到需求。
拓展说明
如果你的输入包含多个带数字的花括号(比如abc{123}def{456}hij),只要给正则加上全局匹配标识(不同语言里写法略有差异,比如Python里加re.G参数),就能一次性清空所有花括号内的数字,输出abc{}def{}hij。
内容的提问来源于stack exchange,提问作者Maritn Ge
相关产品推荐
相关产品推荐

