Вам не нужно смотреть в будущее или смотреть в прошлое.Достаточно простого регулярного выражения, такого как:
\{\s*(.*?)\s*\}
Демо, https://regex101.com/r/REDmDT/2 (включая еще несколько примеров строк)
Как вы сказали: «Мне нужно создать регулярное выражение, которое будетполучить все внутри {} без пробелов "
Это регулярное выражение дает вам все в фигурных скобках, исключая пробелы справа и слева и сохраняя все пробелы внутри, как есть.
Вот код Java, демонстрирующий то же самое.
public static void main(String[] args) throws IOException {
List<String> list = Arrays.asList("my {test} value", "my { test } value", "my { test } value",
"my { test hello I am } value", "my { testing 10 times } value");
Pattern p = Pattern.compile("\\{\\s*(.*?)\\s*\\}");
list.forEach(x -> {
Matcher m = p.matcher(x);
if (m.find()) {
System.out.println(x + " --> " + m.group(1));
}
});
}
Это выходы,
my {test} value --> test
my { test } value --> test
my { test } value --> test
my { test hello I am } value --> test hello I am
my { testing 10 times } value --> testing 10 times