Java регулярное выражение справки - PullRequest
0 голосов
/ 07 января 2011

У меня есть строка в следующем формате:

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

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

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

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

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

"someString(modified)";

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

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

Ответы [ 3 ]

2 голосов
/ 07 января 2011

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

1 голос
/ 07 января 2011
yourString.replaceAll("(.+\\(.+\\)\\()[^\\}]+(\\)$)", "$1modified$2")
0 голосов
/ 07 января 2011
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* перед $, если вам также нужно обработать этот случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...