使用正则表达式过滤带异常的括号

using regex to filter parenthesises with exceptions

我正在使用 Python re 并希望过滤文本并删除除匹配 (.) 之外的所有括号,我已经使用否定前瞻编写了此正则表达式 '((?!\(\.\))[()])',但它仍在为 (.)

获取 ")" 右括号

请问我该如何纠正这个问题?

正则表达式到达 ), 执行前瞻,但失败并吃掉括号。

试试这个,感觉分两步比较清楚

victim = re.sub(r'\( (?=.[^)])',  '', victim, re.X) # Strip (
victim = re.sub(r'(?<=[^(].) \)', '', victim, re.X) # Strip )

这个模式对我有用:\((?!\.\))|(?<!\(\.)\)(这里的例子:https://regex101.com/r/jK5wU3/5)。这选择:

  1. 所有“(”后面没有“.)”,并且
  2. 所有“)”前面没有“(.”

注意:我发现您可能不是指文字字符串“(.)”,而是指 "all content inside balanced parenthesis"。如果是这种情况,正则表达式可能不是完成这项工作的正确工具。