Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在特定字符串后匹配平衡括号_Regex_Perl - Fatal编程技术网

Regex 在特定字符串后匹配平衡括号

Regex 在特定字符串后匹配平衡括号,regex,perl,Regex,Perl,我在匹配某个字符串“if”后的平衡括号时遇到问题。我知道我可以用 ((?>[^()]|(?R))?\) 这很好用。但是,当我在正则表达式之前添加字符串“if”时 if[ \t]*((?>[^()]|(?R))?\) 它只匹配“if”后面的单个平衡括号 在线演示:(?R)意味着在需要递归整个模式时,递归整个模式: if[ \t]*(\((?>[^()]+|(?1))*\)) (?R)意味着在需要递归整个模式时,递归整个模式: if[ \t]*(\((?>[^()]+|

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

((?>[^()]|(?R))?\)
这很好用。但是,当我在正则表达式之前添加字符串“if”时

if[ \t]*((?>[^()]|(?R))?\)
它只匹配“if”后面的单个平衡括号

在线演示:

(?R)
意味着在需要递归整个模式时,递归整个模式:

if[ \t]*(\((?>[^()]+|(?1))*\))
(?R)
意味着在需要递归整个模式时,递归整个模式:

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

我想你需要我想你需要