替换查询字符串中的设计模式

时间:2013-07-09 07:37:35

标签: java regex query-string removeall

我目前有一些这样的网址:

?param=value&offset=19&size=100

或者那样:

?offset=45&size=50&param=lol

我想为每种情况删除“偏移”和“值”。我正在使用正则表达式方法,但我不明白它是如何工作的......你可以帮助我吗? 我还想获得偏移量和大小的两个值。

这是我的工作......

\(?|&)offset=([0-9])[*]&size=([0-9])[*]\

但它根本不起作用!

感谢。

3 个答案:

答案 0 :(得分:2)

假设是Javascript&你只想删除偏移参数:

str.replace(\offset=[0-9]*&?\,"")

对于Java:

str=str.replaceAll("offset=[0-9]*&?","");
//to remove & and ? at the end in some cases
if (str.endsWith("?") || str.endsWith("&")) 
    str=str.substring(0,str.length()-1);

答案 1 :(得分:1)

没有正则表达式。

String queryString ="param=value&offset=19&size=100";
    String[] splitters = queryString.split("&");
    for (String str : splitters) {
        if (str.startsWith("offset")) {
            String offset = str.substring(str.indexOf('=') + 1);//like wise size also
            System.out.println(offset); //prints 19
        }
    } 

答案 2 :(得分:1)

如果你需要为此使用正则表达式,那么在java中为正则表达式尝试这个字符串(不用替换):

"(?>(?<=\\?)|&)(?>value|offset)=.*?(?>(?=&)|$)"

它将删除URL中名为“offset”或“value”的所有参数。它还将保留URL中其他参数的任何必需参数标记。