正则表达式 - 从URL获取值

时间:2016-01-06 13:33:49

标签: java regex

我需要从URL获取此字符串 - " start = 100" ,start可以从0变为1000+。 我尝试过像 -

这样的正则表达式
    Pattern p5 = Pattern.compile(".*start=[0-9]+.*");
    Pattern p6 = Pattern.compile(".*start=\\d+.*");
    Pattern p7 = Pattern.compile(".*start=.*");
    Pattern p8 = Pattern.compile(".*(start=[0-9]+).*");

似乎没有任何作用:(

2 个答案:

答案 0 :(得分:1)

如果您将()添加到前2个正则表达式示例之一,或者如果您使用4 th 示例,则可以获得所需的输出。< / p>

public static void main(String[] args) {
     String url = "http://localhost:8080/x?start=100&stop=1000";
     Pattern p = Pattern.compile(".*(start=[0-9]+).*");
     Matcher m = p.matcher(url);
     if ( m.find() ) {
         // m.group(0) - url
         // m.group(1) - the first group (in this case - it's unique) 
         System.out.println(m.group(1));
     }
}

输出:

start=100

答案 1 :(得分:0)

根据您的代码中URL的存在方式(可能不是字符串而是URI),您可以使用此代码段中的某些部分。

URI uri = new URI("http://localhost:8080/x?start=10&stop=100");
String[] params = uri.getQuery().split("&");
for (String param : params) {
    if (param.startsWith("start=")) {
        System.out.println(param);
        break;
    }
}