[英]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.