簡體   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