2011-01-07 3 views
0

У меня есть строка в следующем формате:Java регулярное выражение помощь

String str = "someString(anotherString)(lastString)"; 

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

newStr = "someString(anotherString)(modified)"; 

Я использую регулярное выражение с "\\(([^\\}]+)\\)$" модель.

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

"someString(modified)"; 

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

Любая помощь приветствуется.

+0

Какой код вы используете для его замены? – Eric

ответ

0
String resultString = subjectString.replaceAll(
    "(?x)\\( # match opening parenthesis\n" + 
    "[^()]* # match 0 or more characters except parentheses\n" + 
    "\\)  # match closing parenthesis\n" + 
    "$  # match the end of the string", "(modified)"); 

До сих пор это не допускало пробелов между закрывающей скобкой и концом строки. Возможно, вы захотите вставить \\s* до $, если вам тоже нужно обработать этот случай.

+0

Спасибо, что сработало отлично. – user234194

1
yourString.replaceAll("(.+\\(.+\\)\\()[^\\}]+(\\)$)", "$1modified$2") 
2

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

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