Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 - Fatal编程技术网

Php 选择非括号和非逗号引号

Php 选择非括号和非逗号引号,php,regex,Php,Regex,当我使用preg_split with时 /['\"][^'\"\\\\]*(?:\\\\,[^'\"\\\\]*)*['\"](*SKIP)(?!)|\,/ 为了 它的裂口像 [0] => min(2 [1] => 3 [2] => 5 [3] => 19 [4] => 5) [5] => 2 我想选择非括号和非逗号引号。 因此: 同意为此使用非正则表达式方法,因为这可能会很快变得笨拙。但如果你好

当我使用preg_split with时

/['\"][^'\"\\\\]*(?:\\\\,[^'\"\\\\]*)*['\"](*SKIP)(?!)|\,/
为了

它的裂口像

    [0] => min(2
    [1] =>  3
    [2] =>  5
    [3] =>  19
    [4] =>  5)
    [5] =>  2
我想选择非括号和非逗号引号。 因此:


同意为此使用非正则表达式方法,因为这可能会很快变得笨拙。但如果你好奇,请继续阅读

从技术上讲,您希望找到的逗号位于一组括号中,用max括起来。如果您只想查看单个顶级函数,可以使用以下内容:

(?:^max\\(|(([\'\"])(?:\\\\.|(?!\\g{-1}).)*+\\g{-1})|\\((\\\\.|(?1)|[^()\'\"]|\\((?-1)*+\\))*+\\))(*SKIP)(?!)|,
演示:


如果可以有其他顶级函数,如maxa、b+minc、d,则必须使用其他方法。但是现在还没有必要打开那罐蠕虫。

不是我的否决票,但在一般情况下,您可能需要实现一个基本的解析器,它可以解析任意数量的嵌套函数调用。也就是说,正则表达式可能不是这项工作的最佳工具。这是一个非常不清楚的问题,因此,它甚至会对你有用。
[0] => min(2, 3, 5, 19, 5)
[1] => 2
(?:^max\\(|(([\'\"])(?:\\\\.|(?!\\g{-1}).)*+\\g{-1})|\\((\\\\.|(?1)|[^()\'\"]|\\((?-1)*+\\))*+\\))(*SKIP)(?!)|,