簡體   English   中英

如何使用正則表達式在java中查找url模式

[英]How to find a url pattern in java using regex

我想知道給定的字符串(代表一個url)是否來自同一個子域。 例如, http ://www.myDomain.com/someThing與myDomain.com的組合將返回true。 以下是:

http://myDomain.com ; http://www.domain.myDomain.com ;

但下一個(非法的)網址不會 - “http://.myDomain.com”(注意myDomain之前的點)

基本上,我需要一個代表myDomain.com之前的正則表達式 - 一般需要(http | https):// [az。] myDomain - 這意味着在myDomain.com之前可能會有字母后跟點( 0次或更多次) - 但如果沒有字母,也不應該有點。

有誰知道如何組裝正則表達式?

http(s)?://([a-z]+\.)*myDomain\.com

它可以通過URL類和正則表達式的組合來完成:

    String url = "myDomain.com";
    String[] urlTest = {
        "http://www.myDomain.com/someThing",
        "http://myDomain.com",
        "http://www.domain.myDomain.com",
        "http://.myDomain.com",
        "http://example.com"

    };
    for (String urlx : urlTest) {
        System.out.print(urlx + "\t");
        try {
            URL u = new URL(urlx);
            String host = u.getHost();
            System.out.print("HOST=" + host + "\t");
            Matcher m = Pattern.compile("(.+\\.)?myDomain\\.com").matcher(host);
            System.out.println(m.matches());

        } catch (MalformedURLException ex) {
            System.out.println("false (no valid url)");
        }
    }

舉個例子:

Pattern aPattern = Pattern.compile("https://example.com[^\"<$\n \\[\\])]+", 
Pattern.MULTILINE);
            Matcher aMatcher = aPattern.matcher(Big String);
while (aMatcher.find()) {
logger.info(aMatcher.group());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM