2016-04-06 4 views
-1

に正規表現で文字列を置換することはできませんこれは私がJavaで試した方法です:は、私は、このようなクエリでは、文字列の出現を交換しようとしているのjava

query.replaceAll("NAME\s*=\s*'[A-Z]+'", replacementString); // Gives me Invalid escape sequence message 
query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString); 

Pattern pattern = Pattern.compile("NAME*= *'[A-Z]*'"); 
query.replaceAll(pattern.pattern(), replacementString); 

Pattern pattern2 = Pattern.compile("NAME\\s*=\\s*'[A-Z]*'");     
query.replaceAll(pattern2.pattern(), replacementString); 

この作業はありません。

NAME = 'VALUE'をどのように置き換えることができますか?

+0

: '\\「は無効エスケープシーケンス」エラーを修正するために' *よ。 –

+0

2つのバックスラッシュを使用する –

+0

Precausion: "VALUE"に '' 'が含まれていないことを確認してください。そうでなければ、単純正規表現では不十分です。 – bezmax

答えて

1

Java文字列は不変です。あなたが戻って文字列にreplaceAll呼び出しの結果に割り当てる必要があり

query = query.replaceAll(...); 
はあなたのバックスラッシュをエスケープ
+1

なぜ明らかな回答を投稿しますか? http://stackoverflow.com/questions/3611635/java-regex-replaceall-does-not-replace-string –

0

は、これを試してみてください

query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString); 
query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString); 

そして、あなたのパターンで、

Pattern pattern2 = Pattern.compile("NAME\\s*=\\s*'[A-Z]*'");     
query.replaceAll(pattern2.pattern(), replacementString); 
+0

OPが最初にパターンをコンパイルしたい場合はどうなりますか? –

+0

既に試してみましたが、動作しません –

関連する問題