用逗号分割,后面不跟小写字母

Split with comma not followed with a lowercase letter

请帮我设计一下图案。我有带逗号的字符串,例如:

12v some, Item, which contains comma, Another item

我需要用逗号分隔得到:

 0 => '12v some'
 1 => 'Item, which contains comma'
 2 => 'Another item'

如果逗号后有小写字母不拆分str,如何使用规则?

我正在使用 [\s,][ ][A-Z0-9]+,但它 trim 一些文本

您可以使用像

这样的基于前瞻的解决方案
preg_split('~\s*,(?!\s*\p{Ll})\s*~', $s)

regex demo

详情

  • \s* - 0+ 个空格
  • , - 逗号
  • (?!\s*\p{Ll}) - 如果在当前位置的右侧有 0+ 个空格 (\s*) 后跟一个 Unicode 小写字母 (\p{Ll})
  • \s* - 0+ 个空格。

PHP demo:

$s = "12v some, Item, which contains comma, Another item";
$res = preg_split('~\s*,(?!\s*\p{Ll})\s*~', $s);
print_r($res);

输出:

Array
(
    [0] => 12v some
    [1] => Item, which contains comma
    [2] => Another item
)