Разделение запятой не сопровождается строчной буквой

Помогите мне с рисунком, пожалуйста. У меня есть строка с запятыми, как:

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

Мне нужно разделить его запятыми и получить:

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

Как использовать правило, если есть строчные буквы после запятой не разделить стр?

Я использую [\ s,] [] [A-Z0-9] +, но он обрезает некоторый текст

2

Решение

Вы можете использовать решение на основе Lookahead, как

preg_split('~\s*,(?!\s*\p{Ll})\s*~', $s)

Увидеть regex demo

подробности

  • \s* — 0+ пробелов
  • , — запятая
  • (?!\s*\p{Ll}) — отрицательный прогноз, который не соответствует совпадению, если непосредственно справа от текущего местоположения есть 0+ пробелов (\s*) с последующей строчной буквой Unicode (\p{Ll})
  • \s* — 0+ пробелов.

PHP демо:

$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
)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]