1

Я пытаюсь сопоставить строки любого размера, не окруженные {и}, как в foo {bar}, регулярное выражение должно соответствовать foo, но не {bar}.Как создать регулярное выражение для захвата всего, кроме фигурного содержимого скобок

Режимы, которые я изначально придумал, были ^([^${].*[}$]) и ^(?=[{]).+(?<=[}]), но они, похоже, не делают того, что я ожидал от них.

+0

abc {pq} d Что должно выводиться? abcd? –

+0

Мы не знаем достаточно о вашей исходной строке. Будет ли это всегда выглядеть как 'foo {bar}' для полной строки или может быть как 'foo {bar} foo' или' foo {bar} foo {bar} '? Каким должен быть результат для них? – DelightedD0D

+0

@Maverick_Mrt Да, выход в вашем случае должен быть abcd. –

ответ

0

Если вы хотите получить все символы, которые не находятся в {}, вы можете выполнить операцию разделения с помощью регулярного выражения.

Разделить строку по данному регулярному выражению, используя ваш предпочтительный язык: {. *}

Возвращаемый массив должен состоять сегменты, которые были найдены за пределами каждой {}

Следующая Java пример возвращает массив (ARR):

String abc="19{22}33{44}55{66}7"; 
String[] arr=abc.split("\\{.*?\\}"); 

, который содержит:

["19","33","55","7"]