У меня есть следующая строка
task BLABLA @ {taskId} "@ {BLABLA.title}"
и хотите извлечь из него все заполнители.
Заполнителями являются @ {taskId} и @ {BLABLA.title}.
Я использую следующий код:
final Pattern pattern = Pattern.compile(".*(\\@\\{.*?\\}).*");
final Matcher matcher = pattern.matcher(this.text);
while (matcher.find())
{
final String placeholder = matcher.group(1);
this.placeholders.add(placeholder);
}
Проблема в том, что в строках с несколькими заполнителями (как показано выше) он обнаруживает только первый заполнитель.
Другой пример:
task BLABLA @ {taskId} "@ {BLABLA.title}" {start @ {startDateTime}
задача BLABLA2 "Текст" {выделять усилия RBLABLA2 @ {BLABLA2.effort}
}}
В этом тексте код выше обнаруживает
- @{BLABLA.title}
- @ {startDateTime}
- @{BLABLA2.effort}
Если я удалю @ {BLABLA.title}, то будет обнаружен @ {taskId}.
Как изменить код так, чтобы в последнем примере были обнаружены все заполнители (@ {taskId}, @ {BLABLA.title}, @ {startDateTime}, @ {BLABLA2.effort})?