python - 在 Python 中用正则表达式替换 '(' 时出错

您好,有以下字符串:

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/

相关文章:

javascript - 如何在 redux-toolkit 中输入 'prepare' 函数

c++ - 如何从析构函数返回变量

spring-webflux - Netty Http 客户端连接池

c - 如何从内存中正确分配结构

python - Python 何时从实例 __dict__ 返回到类 __dict__?

python - 计算数据框 Pandas 的多列中某个值的出现次数

html - 对 div 标签内的 span 元素应用边距和在 div 标签内应用边距有什么区别?

python - 如何在 Python 中对列表进行排序和过滤?

javascript - 我如何在 react 中使用刷新 token

r - 如何在循环中获取标签