2015-03-14 18 views
6

ho la seguente stringa di input:Java Regex racchiudere le parole tra parentesi

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

(la lunghezza della stringa e == 'qualcosa' varia).

output desiderato:

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

ho cercato

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

ma questo non mi dà la staffa finale. Qualche idea su come questo possa essere fatto?

Grazie!

+2

ho usato s' @hwnd modo per farlo. Grazie a tutti quelli che hanno risposto :) – user100001

+0

Ma come si sostituisce 'spazi intorno ==' – vks

+0

@vks - Ho sostituito gli spazi intorno == con un altro replaceAll() – user100001

risposta

7

Se non mi incomprensione, si potrebbe abbinare tutto tra il cita e sostituisci.

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

Se si desidera che lo spazio bianco attorno == sostituito:

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

Si può fare in due step di replaceAll():

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

completa di codice-esempio:

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

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

provare questo

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