标签: regex perl
我无法在某个字符串后匹配平衡括号"如果"。我知道我可以使用
((?>[^()]|(?R))?\)
这很好用。但是,当我添加我的字符串"如果"在此正则表达式之前
if[ \t]*((?>[^()]|(?R))?\)
它仅匹配"之后的单个平衡括号。如果"。
在线演示:https://regex101.com/r/6lg0qi/3
答案 0 :(得分:3)
(?R)表示递归整个模式,同时需要重新生成其中的一部分:
(?R)
if[ \t]*(\((?>[^()]+|(?1))*\))
Live demo