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]],第六];但是下一步就被卡住了如果你知道你的分隔符是什么样子的话,你就不需要正则表达式了。下载一个并使用它。问题解决了。不要使用正则表达式(原因很简单:这是浪费时间,因为使用正则表达式实际上是不可能的)。谢谢!不需要解密-这只需要正常工作。的确如此)谢谢你!不需要解密-这只需要正常工作。确实如此)