Как не включить в регулярное выражение литерал после включения его в первую группу?

Я использую preg_match_all () для сопоставления некоторых строк.

это мой код

preg_match_all('@([a-zA-Z0-9,\(\)\-\s\.\#:]*)Date From: [0-9]{2}/[0-9]{2}/[0-9]{4}([, \s]*[0-9]{2}/[0-9]{2}/[0-9]{4})*\s(Division Type: [A-Z ]*)*@m', $string, $match);

это выход

https://regex101.com/r/hE3iO2/1

Теперь я хочу добавить / в первую группу, чтобы включить буквальное / в группе захвата, и это произойдет

из этого

([a-zA-Z0-9,\(\)\-\s\.\#:]*)

к этому

([a-zA-Z0-9,\(\)\-\s\.\#:/]*)

https://regex101.com/r/wM1rW7/1

Как я могу предотвратить это при добавлении / в группу?

1

Решение

Сделайте свое регулярное выражение не жадным:

([a-zA-Z0-9,()\s.#:/-]*?)Date From: [0-9]{2}/[0-9]{2}/[0-9]{4}([, \s]*[0-9]{2}/[0-9]{2}/[0-9]{4})*\s(Division Type: [A-Z ]*)*

RegEx Demo

0

Другие решения

Других решений пока нет …