2011-01-07 4 views
0

:私は最後の括弧の中lastStringを交換したかったJavaの正規表現のヘルプ

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

を、すなわち新しいStringは

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

私はあなたの表情にタイプミスがあると思います。中括弧を通常のものに置き換えれば、それはうまくいくと思います。