Есть ли концепция, похожая на ленивый / жадный / притязательный для начала группы захвата? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь перехватить искаженные сегменты html, используя ленивый квантификатор, но безуспешно:

<p>ok</p> <p>malformed</b></p>

записывается как целое с использованием <p>(.+?)</b></p> - не только вторая часть.

Эточто я получаю от движка регулярных выражений notepad ++.Но я заметил такое же поведение и в phpStorm.

Я всегда думал, что ленивый будет играть минимальную роль.Таким образом, из того, что я видел, я вычел, что лень / жадность / собственничество - это исключительно конец сегмента.Есть ли похожая концепция для начала группы захвата?

Пожалуйста, не публикуйте ответы на саму проблему захвата, меня интересует теоретическая сторона этого целого.Спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018

Попробуйте этот помощник

Да, регулярные выражения имеют политики, такие как жадные и ленивые.<p>.*?</b></p> ваше регулярное выражение сначала будет соответствовать <p>, а затем продолжайте сопоставлять, пока не найдет </b>.Чтобы понять, посмотрите на это регулярное выражение.

<p>.*?<\/p>

Таким образом, это регулярное выражение попытается сопоставить <p> с следующим </p>.

, если вы удалите ?, оно попытается сопоставить <p> до последнего </p>.

Рабочий

<p>\w+?<\/b><\/p>

Демо

...