У меня есть данные в следующем формате:регулярного выражения получить все, кроме последнего слова и до найти какой-нибудь текст
1 DOPPEL TYP I MEERBLICK HALBPENSION
FRÜHBUCHER 20%
INKL. REISELEITUNG UND TRANSFER AB/BIS
FLUGHAFEN
KEIN INFO-TREFFEN IM HOTEL! REISELEITUNG IST TELEFONISCH ZU ERREICHEN UND AUF ANFRAGE
F367655 HERR WILKAT, CHRISTINE O 05.01.15
F367655 HERR LEBEDIES, HANS-JOACHIM O 05.01.15
И я хочу, чтобы захватить: 1 и Doppel TYP I Meerblick и весь текст между «FFRUHBUCHER ..» и «ANFRAGE» (так F367655 - это конечный разделитель) как разные совпадения. Однако у меня есть это регулярное выражение, которое захватывает: 1 и HALBPENSION:
$re = "/\\s(\\d{1})(\\w+\\W{1,2})*/";
$str = " 1 DOPPEL TYP I MEERBLICK HALBPENSION\n FRÜHBUCHER 20%\n INKL. REISELEITUNG UND TRANSFER AB/BIS\n FLUGHAFEN\n KEIN INFO-TREFFEN IM HOTEL! REISELEITUNG IST TELEFONISCH ZU ERREICHEN UND AUF ANFRAGE\n F367655 HERR WILKAT, CHRISTINE O 05.01.15\n F367655 HERR LEBEDIES, HANS-JOACHIM O 05.01.15";
preg_match_all($re, $str, $matches);
Я проверяю здесь: Regex101
Так вместо того, чтобы захватить последнее слово («HALPENSION») Я хочу, чтобы захватить все, кроме последнего слова , А также, Что после HALBPENSION (может быть другое слово) и перед чем-то вроде F367655 ("FRÜHBUCHER 20% Inkl. REISELEITUNG UND ПЕРЕДАЧА AB/BIS FLUGHAFEN KEIN INFO-Treffen IM HOTEL! REISELEITUNG IST TELEFONISCH ZU ERREICHEN UND AUF Anfrage").
Я пробовал несколько решений, но я не получаю его на работу.
Заранее благодарю вас за помощь!
Не уверен, что вам нужно, попробуйте [ ' '~^\ с * (\ d) \ S * (. +?) \ S * \ Ъ \ W + $ ~ ' '] (https://regex101.com/r/zP1wM7/2). Это будет * захват * '1' и' DOPPEL TYP I MEERBLICK'. –
use '(\ w + \ W {1,2}) *'. Это будет захватывать все, кроме последнего слова. –
Спасибо, работает, но если у меня есть текст после donot. Извините, забыл поставить – Mary