匹配所有不是逗号后跟空格

时间:2016-09-04 14:08:41

标签: php regex

有许多类似的问题,但我找不到任何地址完全是我的情况而且我一直在尝试并且没有运气。

我有一个逗号分隔的值列表,如下所示:

Apple, Banana, Carrot and Durian, Eggs

所以有些值是简单的词,有些则有多个词。我需要用一对引号来包装每个值,我找到了一个让我非常接近的答案:

preg_replace( $list, '/([^,]+)/g', '"$1"' )

这会产生:

"Apple","Banana","Carrot and Durian","Eggs"

但是有一个问题:它删除了逗号之后的空格。如果我添加空白字符/([^,\s]+)/g,它不会删除逗号之后的空格,但它会匹配值内的空格:

"Apple", "Banana", "Carrot" "and" "Durian", "Eggs"

https://regex101.com/r/eN2hY4/31

的实时版本

提前多多感谢!

2 个答案:

答案 0 :(得分:2)

使用\K丢弃之前匹配的字符。

\s*\K([^,]+)

DEMO

答案 1 :(得分:1)

你可以这样做:

$str ='Apple, Banana, Carrot and Durian, Eggs';

$result = '"' . strtr($str, [', '=>'", "']) . '"';