2

我写了这个正则表达式:

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

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

如果您单击下面的链接,您可以看到它工作正常。

http://rubular.com/r/FYwP8Aprdb

但是当我将它粘贴到 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

 */

}

我的假设是我错误地转义了正则表达式,但我不确定。有任何想法吗?

4

1 回答 1

4

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

boxText = boxText.replaceAll(regex, "**$1**");
于 2013-10-27T14:34:56.553 回答