您好,有以下字符串:
s = r'aaa (bbb (ccc)) ddd'
我想找到最里面的嵌套括号并将其替换为 {}
。想要的输出:
s = r'aaa (bbb {ccc}) ddd'
让我们从嵌套的 (
开始。我使用以下正则表达式来查找嵌套的括号,效果很好:
match = re.search(r'\([^\)]+(\()', s)
print(match.group(1))
(
然后我尝试进行替换:
re.sub(match.group(1), r'\{', s)
但我收到以下错误:
error: missing ), unterminated subpattern at position 0
我真的不明白这是怎么回事。
最佳答案
你可以使用
import re
s = r'aaa (bbb (ccc)) ddd'
print( re.sub(r'\(([^()]*)\)', r'{\1}', s) )
# => aaa (bbb {ccc}) ddd
参见 Python demo .
详细信息:
\(
- 一个 (
字符([^()]*)
- 第 1 组 (\1
):除 (
和 )
\)
- )
字符。替换是用大括号括起来的第 1 组值。
关于python - 在 Python 中用正则表达式替换 '(' 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72324724/