You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何移除字符串中的括号?现有re.sub写法无效求解决方案

嘿,我来帮你搞定这个问题~你之前的正则写法没效果是因为没找对正确的匹配方式,我给你拆解下原因,再给你两个实用的解决方案:

为什么你之前的写法无效?

  • re.sub(r"(\)", " ", document):这个正则只单独匹配右括号),而且只是把它替换成空格,左括号(完全没被处理,自然达不到移除所有括号的效果。
  • re.sub(r"()", " ", document):这里的()是空分组,会匹配字符串里的每一个间隙(比如字符之间、开头结尾),执行后会把整个字符串插满空格,完全不是你想要的结果。

实用解决方案

方案1:移除文本中所有的括号(不管位置)

如果你的需求是把文本里所有的()都删掉,用正则的字符类最直接:

import re
document = "(Hello World)"
document = re.sub(r'[()]', '', document)
print(document)  # 输出: Hello World

这个方法也适用于多括号场景,比如"(Hello) (Python)"会被处理成"Hello Python"

方案2:精准移除首尾的成对括号

如果你的文本刚好是被一对括号整个包裹的(就像你举的例子),可以用更精准的匹配,只去掉开头的(和结尾的),保留中间内容:

import re
document = "(Hello World)"
document = re.sub(r'^\((.*)\)$', r'\1', document)
print(document)  # 输出: Hello World

这里的正则逻辑:

  • ^$锁定字符串的开头和结尾
  • \(\)匹配首尾的括号(需要转义,因为(在正则里是特殊符号)
  • (.*)捕获括号中间的所有内容,替换时用r'\1'引用捕获到的内容,就完美保留了中间文本。

内容的提问来源于stack exchange,提问作者Outcast

火山引擎 最新活动