如何在逗号上分割一个后面没有空格的字符串?

Jer*_*hrs 8 php regex preg-split

我希望结果是:

Cats, Felines & Cougars    
Dogs    
Snakes
Run Code Online (Sandbox Code Playgroud)

这是我能得到的最接近的。

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = split(',[^ ]', $string);
print_r($result);
Run Code Online (Sandbox Code Playgroud)

这导致

Array
(
    [0] => Cats, Felines & Cougars
    [1] => ogs
    [2] => nakes
)
Run Code Online (Sandbox Code Playgroud)

Ama*_*ali 5

您可以使用负前瞻来实现这一点:

,(?!\s)
Run Code Online (Sandbox Code Playgroud)

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

在 PHP 中,您可以将它与 一起使用preg_split(),如下所示:

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?!\s)/', $string);
print_r($result);
Run Code Online (Sandbox Code Playgroud)

输出:

,(?!\s)
Run Code Online (Sandbox Code Playgroud)


Sen*_*sei 5

split() 函数已被弃用,因此我使用 preg_split 代替。

这是你想要的:

$string = "Cats, Felines & Cougars,Dogs,Snakes";
$result = preg_split('/,(?! )/', $string);
print_r($result);
Run Code Online (Sandbox Code Playgroud)

这用?!表示我们只在后面没有分组序列时才希望在逗号上拆分。

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

http://perldoc.perl.org/perlre.html#Look-Around-Assertions