如何使用正则表达式处理嵌套括号?
发布时间:2020-12-14 02:30:16 所属栏目:百科 来源:网络整理
导读:我想出了一个正则表达式字符串,它将给定的文本解析为3个类别: 在括号中 括号内 既不是. 像这样: [.+?]|(.+?)|[w+ ?]+ 我的目的是仅使用最外层的运算符.所以,给定a(b [c] d)e,分裂将是: a || (b[c]d) || e 它在括号内的括号或括号内的括号中工作正常,
我想出了一个正则表达式字符串,它将给定的文本解析为3个类别:
>在括号中 像这样: [.+?]|(.+?)|[w+ ?]+ 我的目的是仅使用最外层的运算符.所以,给定a(b [c] d)e,分裂将是: a || (b[c]d) || e 它在括号内的括号或括号内的括号中工作正常,但在括号内的括号和括号内的括号时会分解.例如,a [b [c] d] e被分割为 a || [b[c] || d || ] || e. 有没有办法单独使用正则表达式来处理这个问题,而不是使用代码来计算打开/关闭括号的数量?谢谢!
Standard1正则表达式不够复杂,无法匹配那样的嵌套结构.接近这个的最佳方法可能是遍历字符串并跟踪开/关括号对.
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;退房 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |