[英]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());
}
}
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.