Java 使用字符串';s用regex替换all

Java 使用字符串';s用regex替换all,java,regex,string,replaceall,Java,Regex,String,Replaceall,如何重新放置以下字符串组合: word1=“word2” 使用以下字符串组合: word1=“word3” 使用单词边界\b 我使用了以下方法,但不起作用: String word2 = "word2"; String word3 = "word3"; String oldLine = "word1=\"" + word2 + "\""; String newLine = "word1=\"" + word3 + "\""; String lineToReplace = "\\b" + oldL

如何重新放置以下字符串组合:
word1=“word2”
使用以下字符串组合:
word1=“word3”

使用单词边界
\b

我使用了以下方法,但不起作用:

String word2 = "word2";
String word3 = "word3";
String oldLine = "word1=\"" + word2 + "\"";
String newLine = "word1=\"" + word3 + "\"";
String lineToReplace = "\\b" + oldLine + "\\b";
String changedCont = cont.replaceAll(lineToReplace, newLine);

其中
cont
是一个字符串,它包含许多字符,包括word1=“word2”字符串组合。

删除最后一个
\b
。它不会做你想做的事,
不是文字字符。

删除最后一个
\b
。它不会做你想做的事,
不是文字字符。

你需要的唯一文字边界是在前面-比赛的其余部分已经有了文字边界(引号等)

String input = "alma word1=\"word2\"";
String replacement = "word1=\"word3\"";
String output = input.replaceAll("\\bword1=\\\"word2\\\"", replaceMent);
这将有助于:

 cont.replaceAll("\\bword1=\"word2\"", "word1=\"word3\"");

你唯一需要的单词边界是在前面-你比赛的其他部分已经有了内置的单词边界(引号等)

这将有助于:

 cont.replaceAll("\\bword1=\"word2\"", "word1=\"word3\"");

如果将
行替换为替换
行:

String lineToReplace = "\\b" + oldLine + "(?!\\w)";

它应该按照您想要的方式工作。

如果您将
行替换为以下内容:

String lineToReplace = "\\b" + oldLine + "(?!\\w)";

它应该按照您想要的方式工作。

您的字符串(the”)中有单词边界,\b并且您正在regexp中使用单词边界。例如,删除最后一个\b。

您的字符串(the”)中有单词边界,\b并且您正在regexp中使用单词边界。例如,删除最后一个\b。

双引号在正则表达式中没有什么特殊之处,因此您不需要转义它们-即
“\\bword1=\“word2\”
是preferable@jabaljabal ma yehezzak ri7:D@jabal很抱歉,我以为你懂阿拉伯语,jabal在阿拉伯语中的意思是山,有句著名的谚语说:“哦,山啊,千万别被风吹动”;-)双引号在正则表达式中没什么特别的,所以你不需要逃避它们-即
“\\bword1=\“word2\”
是preferable@jabaljabal ma yehezzak ri7:D@jabal很抱歉,我以为你懂阿拉伯语,jabal在阿拉伯语中的意思是山,有句著名的谚语说:哦,山啊,千万别被风吹得摇摇欲坠”;-)
(?=\W |$)
也可以写成
(?!\W)
,或者在这种情况下就写成
\B
。谢谢@Qtax:用更简单的
(?!\\W)
(?=\W |$)
也可以写成
(?!\W>)
,或者在本例中仅是
\B
。感谢@Qtax:用更简单的
(?!\\w)
+1更新了答案,提醒我字符串中已经有了单词边界
\B
,这就是
+1提醒我字符串中已经有了单词边界
\B
,这就是