2017-07-26 110 views
0

我在匹配某个字符串“if”后的平衡括号时遇到问题。我知道我可以匹配使用平衡括号匹配某个字符串后的平衡括号

((?>[^()]|(?R))?\) 

而且工作得很好。但是,当我在此正则表达式之前添加字符串“if”时,它将只在“if”之后匹配单个平衡括号。

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

+0

我想你需要['如果[\ t] *(\((?:?[^()] ++ |(1))* \))'](https://regex101.com/r/R1w0ei/1) –

回答

3

(?R)意味着递归整个图案而你需要再次出现的这大块:

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

Live demo