Php Regexp提示请求

Php Regexp提示请求,php,regex,Php,Regex,我有一根像 "first,second[,b],third[a,b[1,2,3]],fourth[a[1,2]],sixth" 我想把它炸成阵列 Array ( 0 => "first", 1 => "second[,b]", 2 => "third[a,b[1,2,3]]", 3 => "fourth[a[1,2]]", 4 => "sixth" } 我试图删除括号: preg_replace("/[ ( (?>[

我有一根像

"first,second[,b],third[a,b[1,2,3]],fourth[a[1,2]],sixth"
我想把它炸成阵列

Array (
    0 => "first",
    1 => "second[,b]",
    2 => "third[a,b[1,2,3]]",
    3 => "fourth[a[1,2]]",
    4 => "sixth"
}
我试图删除括号:

preg_replace("/[ ( (?>[^[]]+) | (?R) )* ]/xis", 
             "",
             "first,second[,b],third[a,b[1,2,3]],fourth[a[1,2]],sixth"
); 

但是在下一步中被卡住了

PHP的regex风格支持递归模式,所以类似的东西可以工作:

$text = "first,second[,b],third[a,b[1,2,3]],fourth[a[1,2]],sixth";

preg_match_all('/[^,\[\]]+(\[([^\[\]]|(?1))*])?/', $text, $matches);

print_r($matches[0]);
将打印:

Array ( [0] => first [1] => second[,b] [2] => third[a,b[1,2,3]] [3] => fourth[a[1,2]] [4] => sixth ) 其中打印:

Array ( [0] => first [1] => second[,b] [2] => third[a,b[1,2,3]] [3] => fourth[a[1,2]] [4] => sixth [5] => [s,[,e,[,v,],e,],n] ) 排列 ( [0]=>首先 [1] =>秒[,b] [2] =>第三[a,b[1,2,3]] [3] =>第四[a[1,2]] [4] =>第六 [5] =>[s,[,e,[,v,],e,],n]
) PHP的regex风格支持递归模式,因此类似这样的方式可以工作:

$text = "first,second[,b],third[a,b[1,2,3]],fourth[a[1,2]],sixth";

preg_match_all('/[^,\[\]]+(\[([^\[\]]|(?1))*])?/', $text, $matches);

print_r($matches[0]);
将打印:

Array ( [0] => first [1] => second[,b] [2] => third[a,b[1,2,3]] [3] => fourth[a[1,2]] [4] => sixth ) 其中打印:

Array ( [0] => first [1] => second[,b] [2] => third[a,b[1,2,3]] [3] => fourth[a[1,2]] [4] => sixth [5] => [s,[,e,[,v,],e,],n] ) 排列 ( [0]=>首先 [1] =>秒[,b] [2] =>第三[a,b[1,2,3]] [3] =>第四[a[1,2]] [4] =>第六 [5] =>[s,[,e,[,v,],e,],n]
)是否要使用正则表达式将字符串拆分为字符串数组?如果是这样的话,请检查这一点,作为我试图删除括号preg_replace(“/[((?>[^[]]+)|(?R))*]/xis“,”,“第一,第二[,b],第三[a,b[1,2,3]],第四[a[1,2]],第六];但是下一步就被卡住了如果你知道你的分隔符是什么样子的话,你就不需要正则表达式了。下载一个并使用它。问题解决了。不要对正则表达式执行此操作(原因很简单:这是浪费时间,因为实际上不可能对正则表达式执行此操作)?如果是这样的话,请检查这一点,作为我试图删除括号preg_replace(“/[((?>[^[]]+)|(?R))*]/xis“,”,“第一,第二[,b],第三[a,b[1,2,3]],第四[a[1,2]],第六];但是下一步就被卡住了如果你知道你的分隔符是什么样子的话,你就不需要正则表达式了。下载一个并使用它。问题解决了。不要使用正则表达式(原因很简单:这是浪费时间,因为使用正则表达式实际上是不可能的)。谢谢!不需要解密-这只需要正常工作。的确如此)谢谢你!不需要解密-这只需要正常工作。确实如此)