Я бы использовал регулярные выражения, чтобы соответствовать этому.Нечто подобное может работать для вашего выражения:
String regex = "\\{.*?\\}";
Так как это "неохотно" будет соответствовать любой подстроке, которая окружена {и}..*?
заставляет его находить любой символ между {и}, но неохотно, поэтому он не соответствует большей строке:
{tag1}/path/{tag2}/else/{tag3}
, что было бы "жадным" совпадением.Обратите внимание, что фигурные скобки в регулярном выражении необходимо экранировать двойными обратными слешами, поскольку фигурные скобки имеют отдельное значение внутри регулярного выражения, и если вы хотите указать строку фигурных скобок, вам нужно ее избежать.
Например,
public static void main(String[] args) {
String test = "http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html";
String regex = "\\{.*?\\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
С выводом:
{tag1}
{tag2}
{tag3}
Подробнее о регулярных выражениях можно прочитать здесь: Учебник по регулярным выражениям Oracle
и для более подробной информации, здесь: www.regular-expressions.info / tutorial