在某些字符串后匹配平衡括号

时间:2017-07-26 13:53:52

标签: regex perl

我无法在某个字符串后匹配平衡括号"如果"。我知道我可以使用

匹配平衡括号
((?>[^()]|(?R))?\)

这很好用。但是,当我添加我的字符​​串"如果"在此正则表达式之前

if[ \t]*((?>[^()]|(?R))?\)

它仅匹配"之后的单个平衡括号。如果"。

在线演示:https://regex101.com/r/6lg0qi/3

1 个答案:

答案 0 :(得分:3)

(?R)表示递归整个模式,同时需要重新生成其中的一部分:

if[ \t]*(\((?>[^()]+|(?1))*\))

Live demo