如何用Python的re库编写正则提取嵌套括号及内部文本?
提取嵌套大括号的正则表达式解决方案
Python标准库re支持递归正则表达式,恰好能解决嵌套大括号的匹配需求。对应的正则表达式如下:
\{(?:[^{}]|(?R))*\}
正则规则说明
\{:匹配开头的左大括号(?:[^{}]|(?R))*:非捕获组,重复匹配任意次数,包含两种情况:[^{}]:匹配非大括号的任意字符(?R):递归匹配整个正则表达式,处理嵌套的大括号结构
\}:匹配结尾的右大括号
完整代码示例
import re INPUT = '{} abc {abc} cdf {"a":1, "b":"{"a":1, "b":{"a":1}}"}' regex = r'\{(?:[^{}]|(?R))*\}' result = re.findall(regex, INPUT) print(result)
运行后输出结果:
['{}', '{abc}', '{"a":1, "b":"{"a":1, "b":{"a":1}}"}']
注意:如果字符串中存在转义的大括号(如\{),该正则会误匹配,需先处理转义字符或调整正则规则排除转义场景。
内容的提问来源于stack exchange,提问作者mftgk
相关产品推荐
相关产品推荐

