2012-02-03 31 views
2

如何检查任何URL是否包含一个或多个参数?使用正则表达式检查URL是否包含任何参数

例如,如果URL是

.../PaymentGatewayManager?mode=5015 

那么我们应该能够知道,URL中包含一个参数。或者如果URL是

.../PaymentGatewayManager 

那么我们应该能够知道该URL不包含任何参数。或者,如果URL是

.../PaymentGatewayManager?mode=5015&test=456123&abc=78 

那么我们应该能够知道URL包含三个参数,我们也应该能够知道参数名称,在Java中使用任何正则表达式,价值观。

+2

能否请你检查这个[URL] [1] [1]:http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex 希望这是你的答案 – 2012-02-03 11:13:00

回答

5

如果你想用正则表达式来做到这一点(这可以优化,以及做一个组内搜索):

public static void main(String[] args) { 
    String input = ".../PaymentGatewayManager?mode=5015&test=456123&test2=SomeRandomValue&abc=78"; 
    if(input.contains("?")){ 
     System.out.println("It does contain parameters"); 
     input = "&" + input.substring(input.indexOf("?")+1) + "&"; 

     System.out.println(input); 

     Pattern p = Pattern.compile("&?(\\w.+?)=(.+?)&"); 
     Matcher m = p.matcher(input); 

     while(m.find()){ 
      System.out.println("Token ->" + m.group(1)); 
      System.out.println("Value ->" + m.group(2)); 
     } 
    } 
} 
3

使用java.net.URI的方法获取有关URL的所有信息。

编辑:使用URI,而不是URL(感谢McDowell)。

+3

使用'java.net.URI'字符串操作;一些'URL'方法会导致网络I/O。 – McDowell 2012-02-03 11:11:48

2

您可以使用String.split() URL,或使用java.util.StringTokenizer标记它,使用?作为分隔符。如果您获得多个部分,则确定该URL包含参数。

要获取参数,请用相同的方法将第二部分拆分&。你会得到参数。按照=分割它们中的每一个将给出名称和值。

相关问题