gpt4 book ai didi

python - 如何使用正则表达式处理嵌套括号?

转载 作者:太空狗 更新时间:2023-10-30 00:36:29 26 4
gpt4 key购买 nike

我想出了一个将给定文本解析为 3 类的正则表达式字符串:

  • 括号内
  • 括号内
  • 都没有。

像这样:

\[.+?\]|\(.+?\)|[\w+ ?]+

我的意图是只使用最外层的运算符。因此,给定 a(b[c]d)e,拆分将是:

a || (b[c]d) || e

如果括号内有括号,或括号内有括号,它工作正常,但当括号内有括号和括号内有括号时,它会崩溃。例如,a[b[c]d]e 拆分为

a || [b[c] || d || ] || e.

有什么方法可以单独使用正则表达式来处理这个问题,而不是使用代码来计算开/关括号的数量?谢谢!

最佳答案

标准1 正则表达式不够复杂,无法匹配这样的嵌套结构。解决这个问题的最佳方法可能是遍历字符串并跟踪左/右括号对。


1 我说的是标准,但并不是所有的正则表达式引擎都是标准的。例如,您可以通过使用递归正则表达式来使用 Perl 来做到这一点。例如:

$str = "[hello [world]] abc [123] [xyz jkl]";

my @matches = $str =~ /[^\[\]\s]+ | \[ (?: (?R) | [^\[\]]+ )+ \] /gx;

foreach (@matches) {
print "$_\n";
}
[hello [world]]abc[123][xyz jkl]

编辑:我看到您正在使用 Python;查看pyparsing .

关于python - 如何使用正则表达式处理嵌套括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17384479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com