Java特殊字符RegEx

时间:2011-12-12 07:47:21

标签: java regex

我想在Java中使用正则表达式实现以下

String[] paramsToReplace = {"email", "address", "phone"};

//input URL string
String ip = "http://www.google.com?name=bob&email=okATtk.com&address=NYC&phone=007";

//output URL string
String op = "http://www.google.com?name=bob&email=&address=&phone=";

网址可以包含特殊字符,例如%

4 个答案:

答案 0 :(得分:1)

试试这个表达式:(email=)[^&]+(用数组元素替换email)并替换为组:input.replaceAll("("+ paramsToReplace[i] + "=)[^&]+", "$1");

 String input = "http://www.google.com?name=bob&email=okATtk.com&address=NYC&phone=007";
 String output = input;
 for( String param : paramsToReplace ) {
   output = output.replaceAll("("+ param + "=)[^&]+", "$1");
 }

答案 1 :(得分:0)

对于上面的例子。你可以使用拆分

String[] temp = ip.split("?name=")[1].split("&")[0];
op = temp[0] + "?name=" + temp[1].split("&")[0] +"&email=&address=&phone=";

答案 2 :(得分:0)

这样的东西?

private final static String REPLACE_REGEX = "=.+\\&";
ip=ip+"&";
for(String param : paramsToReplace) {
    ip = ip.replaceAll(param+REPLACE_REGEX, Matcher.quoteReplacement(param+"=&"));
}

P.S。这只是一个概念,我没有编译这段代码。

答案 3 :(得分:0)

您不需要正则表达式来实现:

String op = ip;

for (String param : paramsToReplace) {
    int start = op.indexOf("?" + param);
    if (start < 0)
        start = op.indexOf("&" + param);
    if (start < 0)
        continue;
    int end = op.indexOf("&", start + 1);
    if (end < 0)
        end = op.length();
    op = op.substring(0, start + param.length() + 2) + op.substring(end);
}