URL的正则表达式模式匹配

时间:2014-04-25 08:30:52

标签: java regex

我有一个方法,输入就是一个URL字符串。我会使用不同类型的URL(我在下面提到的示例5个URL)

String url1 = "http://domainName/contentid/controller_hscc.jsp?q=1" ;
String url2 = "http://domainName/contentid/controller.jsp?waitage=1" ;
String url3 = "http://domainName/contentid/controller_runner.jsp" ;
String url4 = "http://domainName/contentid/jump.jsp?q=5" ;
String url5 = "http://domainName/contentid/jump.jsp" ;

我需要查找此URL是否包含控制器* .jsp模式。如果是这样,我将不得不为它写一些其他逻辑。

现在,我需要知道如何在java中编写* controller*.jsp模式

我用这种方式写了一个正则表达式,它总是返回

boolean retVal = Pattern.matches("^(controller)*", url) ;

PS:我使用的是JDK1.4

修改-1

我尝试了以下方式。仍然没有担心

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloWorld{

     public static void main(String []args){
        String url = "http://domainName/contentid/controller_hscc.jsp?q=1" ;
        //String url = "baaaaab" ;
        String regex = "/controller(\\w+)?\\.jsp*" ;

        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(url);
        System.out.println(m.matches());
     }
}

4 个答案:

答案 0 :(得分:2)

将其与以下正则表达式匹配:

controller(\w+)?\.jsp

Demo

答案 1 :(得分:1)

String re = "controller.+jsp";
String str = "http://domainName/contentid/controller_hscc.jsp?q=1";

Pattern p = Pattern.compile(re);
Matcher m = p.matcher(str);

答案 2 :(得分:1)

试试这段代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloWorld{

     public static void main(String []args){
        String url = "http://domainName/contentid/controller_hscc.jsp?q=1" ;
        //String url = "baaaaab" ;
        String regex = "^.*?controller(\\w+)?\\.jsp.*?$" ;

        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(url);
        boolean retVal = Pattern.matches(regex, url) ;
        System.out.println(m.matches() + "__" + retVal);
     }
}

答案 3 :(得分:1)

我发现这很好用:

(controller.*\.jsp(\?.*)?)

请参阅here

作为java字符串,它应该是"(controller.*\\.jsp(\\?.*)?)"

此外,它会给你两组:整个组和?之后的组件。

你也可以通过/ s分割网址,取最后一部分并检查是否以controller开头 - 而不使用任何正则表达式来完成。

相关问题