2016-05-23 2 views
-3

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

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

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

Пример:

Входной сигнал:

text 1 { 
text 2 
text 3 
} 

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

text1 
+0

use 'System.out.println (" текст 1 {\ ntext 2 \ ntext 3 \ n} ". ReplaceAll (" (? S) \\ {. * \\} "," "));' – rock321987

+1

см. http://stackoverflow.com/questions/6500036/pattern-dotall-with-string-replaceall, вы можете использовать 'PATTERN.DOTALL' или prepend' (? s) ' – user140547

+0

В силу того факта, что вы устанавливаете скобу Open-Clos , он пахнет балансовым текстом. В противном случае, почему бы не просто совместить '} {'. В языке нет реальной конструкции, которая не анализирует синтаксис _nesting_. Java не поддерживает его. Двигайтесь дальше, ничего не видно ... – sln

ответ

1

Стало известно, что. это не буквально каждый персонаж.

Я использую

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

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

+1

Не поддерживает ли Java модификатор 's'? Который сделает '.' Совпадение с любым персонажем. – andlrc

+0

use 'System.out.println (" text 1 {\ ntext 2 \ ntext 3 \ n} ". ReplaceAll (" (? S) \\ {. * \\} "," "));' – rock321987

+0

Ну, лучший способ - использовать отрицательный класс символов: ['" \\ {[^ {}] *} "'] (http://ideone.com/KRUhD8) –

0

Вы могли бы просто сделать это:

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

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

Смежные вопросы