Разделение запятой не сопровождается строчной буквой - PullRequest
0 голосов
/ 17 сентября 2018

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

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

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

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

как использовать правило, если в нижнем регистре после запятой не разделяется строчка?

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

1 Ответ

0 голосов
/ 17 сентября 2018

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

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

См. Демоверсию regex

Детали

  • \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
)
...