大括号内内容的正则表达式

2024-02-12

是否有正则表达式来匹配大括号内的内容。例如以下内容:

d = {'key': {'a': [1,2,3]}}

我想要匹配{'key': {'a': [1,2,3]}} and {'a': [1,2,3]}, 但不是{'键':{'a':[1,2,3]}


在经典正则表达式中,这是不可能的 - DFA 无法解析嵌套对。

有多种方法可以使用扩展正则表达式来实现此目的,例如某些正则表达式引擎(例如 Perl 正则表达式)中允许的递归表达式,但它们并不总是很好。 (PHP 太多提供 Perl 版本:/\{(?:[^{}]+|(?R))*\}/(?R)选项是递归匹配。)

不过,您不一定需要正则表达式来执行此类操作。您可以简单地通过遍历列表并保留一堆开括号(以及它们出现的位置)来完成此操作。然后,每当您看到一个左大括号时,您就将其位置推入堆栈,并且每当您看到一个右大括号时,您就会从堆栈中弹出最近看到的左大括号,并使用它的位置加上当前位置作为子字符串的边界这将成为您的比赛之一。重复直到到达字符串的末尾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大括号内内容的正则表达式 的相关文章

随机推荐