Регулярное выражение для разделения строки на каждый {пробел}, но не тогда, когда она содержится в кавычках

#php #regex #preg-match

#php #регулярное выражение #предварительное соответствие

Вопрос:

Я не очень хорошо разбираюсь в регулярных выражениях (на самом деле, вообще мало что знаю). Мне нужно создать массив из строки, разделенной пробелами, но только тогда, когда пробел не заключен в двойные кавычки, поэтому:

 this.line "should be 3" elements
  

будет выглядеть как:

 this.line
should be 3
elements
  

Я знаю, что могу использовать preg_match для получения массива, но я понятия не имею о регулярном выражении.

p.s Я просмотрел другие решения в Stack Overflow, но регулярное выражение, похоже, не работает с моим preg_match.

Спасибо.

Ответ №1:

Вы могли бы попробовать это:

 preg_match_all('/"[^"] "|S /', $s, $matches);
  

Посмотрите, как это работает онлайн: ideone

Комментарии:

1. Отлично, спасибо. Есть ли вероятность разбиения относительно того, что делает каждый сегмент? Я не хочу продолжать спрашивать о регулярном выражении 🙂

2. @webnoob Он не разделяет, а сопоставляет либо что-то среднее «, либо все, что не является пробелом. Умная вещь 🙂 1