2015-03-14 12 views
6

Tôi có chuỗi đầu vào sau:Java regex kèm chữ trong ngoặc

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

(chiều dài chuỗi và == 'cái gì' khác nhau).

đầu ra mong muốn:

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

Tôi đã thử

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

nhưng điều đó không cho tôi khung kết thúc. Bất kỳ ý tưởng làm thế nào điều này có thể được thực hiện?

Cảm ơn!

+2

tôi đã sử dụng @hwnd 's cách để làm điều đó. Cảm ơn tất cả mọi người đã trả lời :) – user100001

+0

Nhưng làm thế nào để thay thế 'khoảng trống ==' – vks

+0

@vks - Tôi thay thế khoảng trống xung quanh == bằng một thay thếTất cả() – user100001

Trả lời

7

Trừ khi tôi là sự hiểu lầm, bạn có thể phù hợp với tất cả mọi thứ giữa trích dẫn và thay thế.

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

Nếu bạn muốn các khoảng trắng xung quanh == thay thế:

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

Bạn có thể làm điều đó trong hai bước của replaceAll():

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

Full mã ví dụ:

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

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

thử này

s = s.replaceAll("(=\\s*)'(.*?)'", "$1(\"$2\")"); 
Các vấn đề liên quan