繁体   English   中英

URL的正则表达式模式匹配

[英]Regex Pattern matching for an URL

我有一个方法,输入的是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中是否具有controller * .jsp模式。 如果是这样,我将不得不为其编写其他逻辑。

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

我这样写了一个正则表达式,它总是返回false

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());
     }
}

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

controller(\\w+)?\\.jsp

演示

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

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

试试这个代码:

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);
     }
}

我发现这个工作正常:

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

这里

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

而且,它将给您两组:整个一组和?之后的部分?

您也可以通过用/ s分割url,使用最后一部分并检查是否以controller开头来controller ,而无需使用任何正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM