如何在java中替换包含字符@和#的精确字符串

如何在java中替换包含字符@和#的精确字符串,java,groovy,Java,Groovy,嗨,我在替换包含#和@字符的确切字符串时遇到了麻烦。 我尝试了mytext.replaceAll('\\b('+text+')\\b',“testtest”)也是,但也没有帮助。 确切的字符串表示确切的单词 String myStr = "test1 test"; myStr= myStr.replaceAll('\\b('+ Pattern.quote("test") +')\\b',"notest")//out put string "test1 no

嗨,我在替换包含#和@字符的确切字符串时遇到了麻烦。 我尝试了mytext.replaceAll('\\b('+text+')\\b',“testtest”)也是,但也没有帮助。 确切的字符串表示确切的单词

String myStr = "test1 test";
                    myStr= myStr.replaceAll('\\b('+ Pattern.quote("test") +')\\b',"notest")//out put string "test1 notest"
                    //Exact word means only "test" is getting replace not "test" from "test1" word to notest1
                    String myStr1 = "test1 #test";
                    myStr1 = myStr1.replaceAll('\\b('+Pattern.quote("#test") +')\\b',"notest")//out put string "test1 #test", #test is not replaced

谁能帮帮我吗。提前谢谢

我想你想要的是:

mytext.replaceAll("(^|\\W)("+text+")($|\\W)", "$1"+replacement+"$3"))

您的解决方案中
\b
的问题是,它只匹配
[a-zA-Z0-9.
#
,以及
@
将单词分开,而不是包含在内。

您有几个编译错误

这段代码适用于我:

String myStr = "test1 test";
    myStr= myStr.replaceAll("\\b("+ Pattern.quote("test") +")\\b","notest");
    System.out.println(myStr);
    String myStr1 = "test1 #test";
    myStr1 = myStr1.replaceAll("\\b("+Pattern.quote("#test") +")\\b","notest");
    System.out.println(myStr);

“替换精确的字符串”是什么意思?我们真的不清楚您想要实现什么。请给出一个使用字符串常量的示例。@Thorbjørn Ravn Andersen精确字符串menas Ex:我想将给定字符串中的“test”替换为“notest”,比如“test1 test”,输出将是“test1 notest”。mytext.replaceAll('\\b('+text+')\\b',“testtest”);代码适用于普通单词(如“test”),但不适用于包含#或@的单词(如“@test”或“#test”),更好地解释自己并更新自己的代码question@surfealokesea编辑了问题谢谢它起作用了你能给我任何链接,我可以在那里查看关于regex的更多信息吗?这会很有帮助的(当你使用Groovy时):
replaceAll(/(^ |\W)($text)($|\W)/,“\$1$replacement\$3”)
@gusaindpk关于您手头的问题:请参阅,通常,()包含您需要的大部分信息。没有编译错误,因为问题在Groovy中