Регулярное сопоставление нескольких групп в строке?
Я пытаюсь придумать регулярное выражение, чтобы иметь возможность разобрать строки следующего типа в группы.
<link rel="alternate" type="application/rss+xml" title="[!PageTitle!]" href="[!SiteRoot!]/feed.xml" />
Мое регулярное выражение:
\[\!(.+)\!\]
Проблема с этим выражением состоит в том, что оно, похоже, объединяет все в 1 группу:
Найдено 1 совпадение:
"[! PageTitle!]" Href="[!SiteRoot!]" Имеет 1 группу:
1. "PageTitle!]" href="[!SiteRoot"
Я не хочу, чтобы регулярное выражение продолжалось... Я пропустил границу? В идеале я хочу найти 2 группы,
[!Заголовок страницы!]
а также
[! Корня сайта]
2 ответа
Решение
Пытаться:
\[\!(.+?)\!\]
+
квантификатор является жадным, поэтому он будет максимально соответствовать строке, захватывая первый [сопровождаемый последним] в строке. +?
это не жадный эквивалент.
Кроме того, я использую конструктор регулярных выражений Rad Software. Мне это нравится.