如何用Regex匹配无闭合括号的括号及其内部内容?
匹配并清理未闭合的括号内容
我来帮你搞定这个正则匹配未闭合括号的问题!针对你给出的示例文本,我们需要精准定位那些没有对应右括号的左括号及其内部内容,同时避开已经完整闭合的括号对。
核心正则表达式
这里推荐使用这个正则来匹配末尾未闭合的括号内容:
\([^)]+$
正则拆解:
\(:转义匹配左括号(因为括号在正则里是特殊元字符,必须转义才能匹配字面量)[^)]+:匹配任意数量不是右括号的字符(确保我们不会把闭合的括号内容包含进来)$:锚定到字符串末尾,保证我们只匹配那些从左括号开始到文本结束都没有右括号的内容
实际使用示例
以你的示例文本为例,我们可以用代码快速完成清理:
import re # 原始文本 original_text = "George Peppard (John 'Hannibal' Smith), Dirk Benedict (Templeton 'Faceman' Peck), Dwight Schultz ('Howling Mad' Murdock), Mr T (B" # 执行替换,删除未闭合的括号内容 cleaned_text = re.sub(r'\([^)]+$', '', original_text) # 输出结果 print(cleaned_text)
执行后得到的修正文本:
George Peppard (John 'Hannibal' Smith), Dirk Benedict (Templeton 'Faceman' Peck), Dwight Schultz ('Howling Mad' Murdock), Mr T
扩展说明
如果你的场景中未闭合括号可能出现在文本中间(比如"A (B, C (D, E"),可以调整正则为:
\((?!.*\))[^)]+
这个版本通过负向前瞻(?!.*\))确保匹配的左括号之后整个文本范围内都没有右括号,能精准定位所有未闭合的括号内容。
内容的提问来源于stack exchange,提问作者Jamie B
相关产品推荐
相关产品推荐

