Не правильно работает matcher java

318
28 февраля 2017, 15:55

Есть HTML-шаблон письма и регулярное выражение, которое работает на regex101.com. С его помощью вместо указанных переменных в формате %name% подставляются необходимые значения. У меня таких переменных несколько в документе.

Проблема в том что Matcher берет первый и последний % и якобы это одно найденное совпадение по регулярному выражению.

Само регулярное выражение выглядит так: %([a-z].+)%. Самое интересное, что на regex101.com всё нормально работает, а в коде нет.

Подскажите решение.

Answer 1

Шаблон .+ находит 1 и более символов, отличных от символов перевода строки. Так как + - "жадный" квантификатор, в совпадении сохраняется последовательность знаков от самого левого до самого правого в строке.

Удалите .+ и используйте

%([a-z]+)%
  • % - символ процента
  • ([a-z]+) - захватывающая группа (подмаска), находящее 1 и более строчных букв ASCII
  • % - символ процента
READ ALSO
Обращение к сервлёту из приложения

Обращение к сервлёту из приложения

Как можно обратится к сервлёту из андроид приложения и вызвать методы doGet(), doPost()?

271
Авторизация ВКонтакте Java

Авторизация ВКонтакте Java

Нужен полноценный класс,который проводит авторизацию пользователя ВКонтакте и даёт токен для дальнейшего его использования

357
Помогите написать java doc для класса

Помогите написать java doc для класса

Есть написанный класс дженерик адаптер

239
Работа с числовыми значениями в строке

Работа с числовыми значениями в строке

К примеру имеется строка - " Купил 10 бананов потратил 5 рублей"Строка может изменять количество слов, само число, но количество цифровых значений...

186