为什么可以';java不能识别这个正则表达式吗?

为什么可以';java不能识别这个正则表达式吗?,java,regex,Java,Regex,我写了这个正则表达式: ((http):\/\/\S*\(jpg | gif | png)) 这个正则表达式应该可以找到字符串中的每个图像链接 正如你所看到的,如果你点击下面的链接,它工作得很好 但是当我将它粘贴到java中,并转义所有的反斜杠并调用replaceAll(regex,string) 程序什么也找不到 String regex = "((http):\\/\\/\\S*\\.(jpg|gif|png))"; boxText.replaceAll(regex, "**$0**");

我写了这个正则表达式:

((http):\/\/\S*\(jpg | gif | png))

这个正则表达式应该可以找到字符串中的每个图像链接

正如你所看到的,如果你点击下面的链接,它工作得很好

但是当我将它粘贴到java中,并转义所有的反斜杠并调用replaceAll(regex,string)

程序什么也找不到

String regex = "((http):\\/\\/\\S*\\.(jpg|gif|png))";
boxText.replaceAll(regex, "**$0**");
上面的代码应该获取字符串中的每个图像,然后将其封装在$0中,但是在运行程序和测试后,什么也没有发生

public class SSCCE {

public static void main(String[] args) {

    String boxText = "http://www.desibucket.com/db2/01/26039/26039.jpg";

    String regex = "((http):\\/\\/\\S*\\.(jpg|gif|png))";
    boxText.replaceAll(regex, "**$1**");        

    System.out.println(boxText);
}

/* output

  http://www.desibucket.com/db2/01/26039/26039.jpg

 */

}
我的假设是我错误地逃过了正则表达式,但我不确定。有什么想法吗?

字符串是不可变的:表达式是匹配的,但值永远不会重新分配给
replaceAll

boxText = boxText.replaceAll(regex, "**$1**");
字符串是不可变的:表达式是匹配的,但值永远不会重新分配给
replaceAll

boxText = boxText.replaceAll(regex, "**$1**");

这个表达式产生的输出是什么?预期的输出是什么?这个表达式产生的输出是什么?预期的输出是什么?@ShaunWild你确定你看到的是更新后的代码(重建等)的输出吗?太直观了,我把你的代码粘贴到我的代码旁边,它们完全一样,但是你的有效而我的无效。。。我就用你的..:谢谢@ShaunWild您确定您正在查看更新代码(重建等)的输出吗?这太直观了,我将您的代码粘贴到我的代码旁边,它们完全相同,但您的代码有效,我的代码无效。。。我就用你的..:谢谢!