Регулярное выражение. Вывод текста между двумя регулярными выражениями
есть код:
$text = " поле1 - значение
поле2: значение
поле3: значение
поле4: значение
поле2: значение";
я с помощью регулярки(в которой я покачто мало что понимаю) поделил на строки для упрощение поиска
$keywords = preg_split("/[\n,]+/", $test);
затем нахожу значение
$testText = preg_match('/поле2:/', $test, $match);
Вопрос Как вывести всё между например "поле2" до "поле3". Учитывая что есть вероятность переноса строки.
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Вы можете использовать
'/поле2:\K.*?(?=поле3:)/su'
Если нужно найти строку до поле3: или конца строки, используйте '/поле2:\K.*?(?=поле3:|$)/su'.
Подробности
поле2:- строкаполе2:\K- оператор, удаляющий весь текст из буфера текущего совпадения.*?- 0 и более любых символов (флагsпозволяет точке находить также переносы строки), как можно меньше(?=поле3:|$)- строкаполе3:или конец строки.
Пример работы кода в PHP:
$text = " поле1 - значение
поле2: значение
поле3: значение
поле4: значение
поле2: значение";
if (preg_match('/поле2:\K.*?(?=поле3:)/su', $text, $match)) {
echo $match[0];
}
// => значение