簡體   English   中英

第四個斜杠后拆分URL正則表達式

[英]splitting URL regex after 4th slash

我正在嘗試將URL分成多個塊。 我要的是一切,直到第5 /

我曾嘗試環顧四周,但對regex還是陌生的,所以有點不知所措。

網址示例是:

http://daniel.mirimar.net.nz/Sites/reginald/DDD/CD

因此,我想從這里獲得的信息是: http://daniel.mirimar.net.nz/Sites/reginald/ : http://daniel.mirimar.net.nz/Sites/reginald/

我怎樣才能做到這一點?

簡短而簡潔總是很好

(?:.+?/){4}
  • (?: -打開非捕獲組
  • .+?/ -懶惰地匹配任何東西,直到/
  • ) -關閉非捕獲組
  • {4} -重復四次

使用這樣的正則表達式:

^.*?\/\/[^\/]*\/[^\/]*\/[^\/]*

要么

^.*?\/(\/[^\/]*){3}

對於沒有CRLF和URL且部分較少的檢查:

^.*?\/(\/[^\/\n\r]*){1,3}

您可以通過以下方式更具體:

^https?:\/(\/[^\/\n\r]*){1,3}

有時, regex可能會讓人有些不知所措,特別是如果您不熟悉它。 它甚至會使代碼更難閱讀( 使用正則表達式的缺點 )。 現在,請不要誤會我的意思,當任務足夠簡單時,我喜歡使用regex IMO,您最好不用regex來解決這個問題。 您可以設計一種方法來找到第5個“ /”的索引位置,然后僅返回子字符串。

就像是:

public static void main(String[] args) {
    String url = "http://daniel.mirimar.net.nz/Sites/reginald/DDD/CD";
    System.out.println(substringNthOccurrence(url, '/', 5));
}

public static String substringNthOccurrence(String string, char c, int n) {
    if (n <= 0) {
        return "";
    }

    int index = 0;
    while (n-- > 0 && index != -1) {
        index = string.indexOf(c, index + 1);   
    }
    return index > -1 ? string.substring(0, index + 1) : "";
}

結果:

http://daniel.mirimar.net.nz/Sites/reginald/

暫無
暫無

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

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