Java正则表达式:用括号将单词括起来

6

我有以下输入字符串:

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

(字符串长度和 == 'something' 会有所不同)。
期望输出:
flag1==("hello") and flag2=("hello2")

我已经尝试过

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

但是这并没有给我右括号。有什么办法可以解决吗?谢谢!

2
我使用了@hwnd的方法来完成它。感谢所有回复的人 :) - user100001
但是这如何替换==周围的空格 - vks
@vks - 我用一个额外的replaceAll()替换了==周围的空格。 - user100001
我的正则表达式在第一次尝试中一次性搞定了 :) - vks
4个回答

7
除非我理解有误,否则您可以匹配引号之间的所有内容并进行替换。
String s = "flag1 == 'hello' and flag2=='hello2'";
s = s.replaceAll("'([^']+)'", "(\"$1\")");
System.out.println(s); // flag1 == ("hello") and flag2==("hello2")

如果您希望替换==周围的空格:

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

2
您可以通过replaceAll()的两个步骤完成此操作:
str.replaceAll("'(?=\\w)","('").replaceAll("(?<=\\w)'$?", "')");

完整的代码示例:

代码示例:

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

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

2

2

试试这个

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接