Мне нужно регулярное выражение для анализа некоторых данных, разделенных на квадратные скобки.
Каждые данные содержат 3 раздела с фиксированными именами и предустановленным порядком , которые можно сравнить с приемом пищи.(Идентификаторы разделов: <br />[Breakfast]<br />
, <br />[Lunch]<br />
, <br />[Dinner]<br />
)
Но проблема в том, что некоторые или все разделы каждого из данных могут не существовать , как проиллюстрировано ниже, а содержимое может содержать пары скобок для предоставленияДополнительная информация.(но никогда не содержит идентификаторов внутри.)
Пример данных:
20181225<br />[Breakfast]<br />Fish finger sandwich [400 kcal]<br />Jellied eels<br />[Lunch]<br />Pork pies [500 kcal]<br />[Dinner]<br />Stargazy pies
20181226<br />[Dinner]<br />Stargazy pies
20181227<br />[Breakfast]<br />Fish finger sandwich [400 kcal]<br />Jellied eels<br />[Dinner]<br />Stargazy pies
20181228
Желаемый выход: $date: 20181225
$breakfast: Fish finger sandwich [400 kcal]<br />Jellied eels
$lunch: Pork pies [500 kcal]
$dinner: Stargazy pies
$date: 20181226
$dinner: Stargazy pies
$date: 20181227
$breakfast: Fish finger sandwich [400 kcal]<br />Jellied eels
$dinner: Stargazy pies
$date: 20181228
Я попробовал регулярное выражение ниже, но не работает должным образом, так как жадный квантификатор игнорирует следующие разделы, даже если они существуют .
(?<date>\d{8})(?:<br \/>\[Breakfast\]<br \/>(?<breakfast>.*))?(?:<br \/>\[Lunch\]<br \/>(?<lunch>.*))?(?:<br \/>\[Dinner\]<br \/>(?<dinner>.*))?
Заранее спасибо.