Вопрос по php, regex – Регулярное выражение, совпадающее с несколькими строками несколько раз
У меня есть такая строка:
<code>Name: John Doe Age: 23 Primary Language: English Description: This is a multiline description field that I want to capture Country: Canada </code>
Это не фактические данные, но вы можете видеть, что я пытаюсь сделать. Я хочу использовать регулярное выражение для получения массива & quot; ключа & quot; поля (Имя, Возраст, Основной язык, Описание, Страна) и их значения.
Я использую PHP.
Моя текущая попытка такова, но она не работает:
<code>preg_match( '/^(.*?\:) (.*?)(\n.*?\:)/ism', $text, $matches ); </code>
$_POST
или из базы данных?
Вот одно из решений:http: //rubular.com/r/uDgXcIvha.
\s*([^:]+?)\s*:\s*(.*(?:\s*(?!.*:).*)*)\s*
Обратите внимание, что я использовал отрицательное прогнозное утверждение,(?!.*:)
. Это единственный способ проверить, что следующая строка Не выглядеть как новое поле, и в то же время продолжить, где вы остановились. (Вот почему взгляды и взгляды известны как Нулевой ширины утверждения.)
EDIT: убран бит о предпросмотрах произвольной ширины; Я ошибался. Вышеуказанное решение в порядке.