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