Python 在“中替代一切”;()";但忽略圆括号在方括号内的情况。”<&燃气轮机&引用;在regrex

Python 在“中替代一切”;()";但忽略圆括号在方括号内的情况。”<&燃气轮机&引用;在regrex,python,regex,Python,Regex,嗨,我试图用regrex来替换由“()”包围的所有内容,用一个空字符串“”,但不是在“()”位于尖括号中的情况下。e、 g.“应忽略而不是替换。 输入示例: Hi<Hi(now)>_(.) 有人能解释一下可能出了什么问题吗?您用捕获组包装了错误的备选方案,并且错过了替换零件中的反向参考: 重新导入 example=“你好()” regex=re.compile(r“()|\([^()]*\)”) 打印(re.sub(regex,r'\1',示例)) 看 注意不是特殊字符,不需要转

嗨,我试图用regrex来替换由“()”包围的所有内容,用一个空字符串“”,但不是在“()”位于尖括号中的情况下。e、 g.“应忽略而不是替换。 输入示例:

Hi<Hi(now)>_(.)

有人能解释一下可能出了什么问题吗?

您用捕获组包装了错误的备选方案,并且错过了替换零件中的反向参考:

重新导入
example=“你好()”
regex=re.compile(r“()|\([^()]*\)”)
打印(re.sub(regex,r'\1',示例))

注意
不是特殊字符,不需要转义

([^()]*\)
模式将以
开头的任何子字符串捕获到组1中,并且只匹配
之间没有其他
的任何子字符串


\1
替换将捕获的子字符串放回原处。

很高兴它为您工作。此外,如果证明对您有帮助(请参阅),您在达到15个代表点后有权享有向上投票的特权。注意:你可以投票选出所有有帮助的答案。
Hi<Hi(now)>_
example = "Hi<Hi(now)>_(.)"
regex = re.compile(r"\<[^\>]*\>|(\([^\)]*\))")
re.sub(regex, '', str(first_p))
'Hi_'