2015-03-14 14 views
6

Ich habe folgendes Eingabestring:Java REGEX umschließen Worte in Klammern

flag1 == 'hello' and flag2=='hello2' 

(die Stringlänge und == 'etwas' variiert).

gewünschte Ausgabe:

flag1==("hello") and flag2=("hello2") 

Ich habe

versucht
line = line.replaceAll("(\\s*==\\s*)", "(\"") 

aber das gibt mir nicht die Endhalterung. Irgendeine Idee, wie das gemacht werden kann?

Danke!

+2

I verwendet @hwnd ‚s Art und Weise, es zu tun. Danke an alle, die geantwortet haben :) – user100001

+0

Aber wie ersetzt das 'spaces around ==' – vks

+0

@vks - Ich ersetzte die Leerzeichen um == mit einem weiteren replaceAll() – user100001

Antwort

7

Es sei denn, ich bin Missverständnis, könnte man alles zwischen dem Match Zitate und ersetzen.

String s = "flag1 == 'hello' and flag2=='hello2'"; 
s = s.replaceAll("'([^']+)'", "(\"$1\")"); 
System.out.println(s); // flag1 == ("hello") and flag2==("hello2") 

Wenn Sie das Leerzeichen um == ersetzt:

s = s.replaceAll("\\s*==\\s*'([^']+)'", "==(\"$1\")"); 
2

Sie können es von replaceAll() in zwei Schritten tun:

str.replaceAll("'(?=\\w)","('").replaceAll("(?<=\\w)'$?", "')"); 

Voll Code-Beispiel:

String str = "flag1 == 'hello' and flag2=='hello2'"; 
str = str.replaceAll("'(?=\\w)","('") 
     .replaceAll("(?<=\\w)'$?", "')"); 

System.out.println(str); // prints flag1 == ('hello') and flag2==('hello2') 
2

versuchen diese

s = s.replaceAll("(=\\s*)'(.*?)'", "$1(\"$2\")"); 
Verwandte Themen