我希望结果为:
Cats, Felines & Cougars
Dogs
Snakes
这是我能得到的最接近的。
$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = split(',[^ ]', $string);
print_r($result);
结果是
Array
(
[0] => Cats, Felines & Cougars
[1] => ogs
[2] => nakes
)
答案 0 :(得分:3)
您可以使用negative lookahead来实现此目的:
,(?!\s)
在简单的英语中,上面的正则表达式表示如果后面没有空格(\s
),则匹配所有逗号 。
在PHP中,您可以将其与preg_split()
一起使用,如下所示:
$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?!\s)/', $string);
print_r($result);
输出:
Array
(
[0] => Cats, Felines & Cougars
[1] => Dogs
[2] => Snakes
)
答案 1 :(得分:2)
split()函数已被弃用,所以我改用了preg_split。
这就是你想要的:
$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?! )/', $string);
print_r($result);
这用吗?!表示只有在没有分组序列的情况下我们才想要在逗号上拆分。
我在运算符上链接了Perl文档,因为preg_split使用Perl正则表达式:
答案 2 :(得分:0)
如果你想用char分割,但想要在转义时忽略该char,请使用lookbehind断言。
在此示例中,字符串将被"分开:"但" \:"将被忽略:
<?php
$string='a:b:c\:d';
$array=preg_split('#(?<!\\\)\:#',$string);
print_r($array);
?>
结果:
阵 ( [0] =&gt;一个 [1] =&gt; b [2] =&gt;光盘 )