Вы можете использовать
(?<=%)[^%\s]+(?=%)
См. Демоверсию regex .Или, если вы предпочитаете захватывать:
%([^%\s]+)%
См. еще одну демонстрацию .
. Часть [^%\s]+
соответствует одному или нескольким символам, которые не являются ни %
, ни пробелами..
См. Демонстрационную версию Java :
String line = "The placeholder is called %Test%! Now you can use it with real placeholders. But if I use more %Test2% placeholders, it won't work anymore :/. %Test3% sucks cause of that!";
Pattern p = Pattern.compile("%([^%\\s]+)%");
Matcher m = p.matcher(line);
List<String> res = new ArrayList<>();
while(m.find()) {
res.add(m.group(1));
}
System.out.println(res); // => [Test, Test2, Test3]