Php 如何拆分逗号后面没有空格的字符串?

Php 如何拆分逗号后面没有空格的字符串?,php,regex,preg-split,Php,Regex,Preg Split,我希望结果是: 猫、猫和美洲狮 狗 蛇 这是我能得到的最接近的了 $string = "Cats, Felines & Cougars,Dogs,Snakes"; $result = split(',[^ ]', $string); print_r($result); 导致 Array ( [0] => Cats, Felines & Cougars [1] => ogs [2] => nakes ) 您可以使用以下方法实现此目的:

我希望结果是:

猫、猫和美洲狮 狗 蛇 这是我能得到的最接近的了

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = split(',[^ ]', $string);
print_r($result);
导致

Array
(
    [0] => Cats, Felines & Cougars
    [1] => ogs
    [2] => nakes
)
您可以使用以下方法实现此目的:

,(?!\s)
在简单的英语中,上面的正则表达式表示仅当后跟空格(
\s
)时才匹配所有逗号

在PHP中,您可以使用它,如下所示:

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?!\s)/', $string);
print_r($result);
输出:

数组
(
[0]=>猫、猫和美洲狮
[1] =>狗
[2] =>蛇
)

如果要按字符分割,但要在转义时忽略该字符,请使用lookbehind断言

在本例中,字符串将被“:”拆分,但“\:”将被忽略:

<?php
$string='a:b:c\:d';
$array=preg_split('#(?<!\\\)\:#',$string);
print_r($array);
?>

结果分为:

排列 ( [0]=>a [1] =>b [2] =>c \:d )

split()函数已被弃用,因此我改用preg_split

以下是您想要的:

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?! )/', $string);
print_r($result);
这用什么?!表示仅当后面没有分组序列时,才希望在逗号上拆分

由于preg_split使用Perl正则表达式,因此我将Perl文档链接到了操作符上:


使用
\s
匹配白色spaces@JayDansand:它实际上是
测试,例如
。啊,你说得对,这就是我略读的结果。撤回@杰丹桑:虽然我不确定这是否是OP期望的输出。我想我会把答案保持原样。谢谢,顺便说一下:)谢谢,我认为这是最简洁的语法