如何在java中执行preg_replace

时间:2014-08-29 12:19:52

标签: java regex

我已经查看了stackoverflow for preg_replace解决方案并偶然发现了一些但对我的问题没有帮助。

我试图用另一个字符串替换部分网址但没有欢乐。

这就是我所做的

    String htmlString = "http://localhost/web/test/11/soap/testserver.php";
    Pattern patt = Pattern.compile("http://(.*)/soap/testserver.php");
    Matcher m = patt.matcher(htmlString);
    StringBuffer sb = new StringBuffer(htmlString.length());
    String text = "local.test";
    while (m.find()) {
      m.appendReplacement(sb, Matcher.quoteReplacement(text));
    }
    m.appendTail(sb);

    System.out.println(sb.toString());

我得到一个输出" local.test.php"但我喜欢" http://local.host/soap/testserver.php"

我做错了什么

提前致谢。

1 个答案:

答案 0 :(得分:0)

只需匹配字符串/soap之前的所有字符,然后从/soap捕获所有字符。在替换部分中,使用字符串\1

添加捕获的组索引http://local.host

正则表达式:

^.*(/soap.*)$

替换字符串:

http://local.host$1

代码:

System.out.println("http://localhost/web/test/11/soap/testserver.php".replaceAll("^.*(/soap.*)$", "http://local.host$1"));

输出:

http://local.host/soap/testserver.php