#regex
#регулярное выражение
Вопрос:
можете ли вы сказать мне, как написать регулярное выражение, которое сопоставляет последовательные термины с некоторым шаблоном с игнорированием пробелов между ними?
Например, у меня есть строка, подобная этой: %{aaa} %{vvv} hello %{aaa} %{aaa}
и я хочу сопоставить это: %{aaa}%{vvv} и %{aaa} %{aaa} где шаблон для терминов должен выглядеть следующим образом:
%{<anything>}
Я понятия не имею, как написать регулярное выражение для этого, но для меня это очень важно. Спасибо за совет.
Комментарии:
1. @cfillion Извините, я нажал не ту клавишу .. это просто %
2. Это должно сработать:
%{[^}]*}(?:s*%{[^}]*})*
Ответ №1:
Чтобы сопоставить несколько помеченных блоков, разделенных пробелами, вы можете использовать это регулярное выражение:
%{[^}]*}(?:s*%{[^}]*})*
Демонстрация регулярных выражений
Подробные сведения:
%{[^}]*}
: Сопоставьте один блок , начинающийся с%{
и заканчивающийся}
(?:s*%{[^}]*})*
: Сопоставьте 0 или более таких тегов , разделенных 0 или более пробелами
Комментарии:
1. спасибо, возможно ли сопоставить только 2 и более терминов в строке?
2. Да, это просто. Просто измените last
*
на, чтобы сделать это
%{[^}]*}(?:s*%{[^}]*})