Java Regex для замены текста между фигурными скобками {}, включая новую строку

Как заменить текст между фигурными скобками {...}, включая новую строку, на регулярное выражение в java?

Я видел много связанных вопросов об удалении текста в скобках, но основная проблема здесь заключается в том, что если в середине совпадения есть новая строка, она как бы не совпадает.

Любая помощь в том, как это сделать правильно, приветствуется, спасибо!

Пример:

Вход:

text 1 {
text 2
text 3
}

Вывод после замены:

text1

person bmo    schedule 23.05.2016    source источник
comment
используйте 1_   -  person rock321987    schedule 23.05.2016
comment
см. stackoverflow.com/questions/6500036/ вы можете использовать PATTERN.DOTALL или добавить перед (?s)   -  person user140547    schedule 23.05.2016
comment
В силу того, что вы указываете скобку Open-Clos, попахивает текстом баланса. В противном случае, почему бы просто не сопоставить }{. В языке нет реальной конструкции, которая не анализирует синтаксис вложения. Ява его не поддерживает. Иди дальше, ничего не видно...   -  person    schedule 23.05.2016


Ответы (2)


Узнал, что . не буквально каждый символ.

я использую

string = string.replaceAll("\\{(.|\\n|\\r|\\t)*?\\}","");

и теперь это работает.

person bmo    schedule 23.05.2016
comment
Разве Java не поддерживает модификатор s? Что заставит . соответствовать любому символу. - person andlrc; 23.05.2016
comment
используйте 1_ - person rock321987; 23.05.2016
comment
Что ж, лучше всего использовать отрицательный класс символов: "\\{[^{}]*}" - person Wiktor Stribiżew; 23.05.2016

Вы можете просто сделать это:

string=string.replaceAll("\\{(.|\n)*?\\}","");

Я надеюсь, что это помогает.

person joel314    schedule 23.05.2016