Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Php 如何使用正则表达式拆分带括号和逗号的字符串?_Php_Regex_Pcre - Fatal编程技术网

Php 如何使用正则表达式拆分带括号和逗号的字符串?

Php 如何使用正则表达式拆分带括号和逗号的字符串?,php,regex,pcre,Php,Regex,Pcre,我有这根绳子。我必须用pcre正则表达式把它分成X个部分。各部分应在逗号处分开。给我带来最大麻烦的是,这些函数字符串还可能包含更多的子函数字符串。所以我想只有通过计算偏执狂的数量才能确定分裂的位置 "Func(1,2),Func(Sub(1,Func(true)),2),Func(Sub(1,false),3)" [1] = "Func(1,2)" [2] = "Func(Sub(1,Func(true)),2)" [3] = "Func(Sub(1,false),3)" 我解决这个问题的所有

我有这根绳子。我必须用pcre正则表达式把它分成X个部分。各部分应在逗号处分开。给我带来最大麻烦的是,这些函数字符串还可能包含更多的子函数字符串。所以我想只有通过计算偏执狂的数量才能确定分裂的位置

"Func(1,2),Func(Sub(1,Func(true)),2),Func(Sub(1,false),3)"
[1] = "Func(1,2)"
[2] = "Func(Sub(1,Func(true)),2)"
[3] = "Func(Sub(1,false),3)"
我解决这个问题的所有尝试都没有成功。

使用递归正则表达式

/.*(?=\().*(?=\)\,)/gU

知道
*
捕获所有类型。无论何时使用,都要小心
(?:\w+(?:\((?:(?:[^()]+|(?R))*)\)),?)+