![](/img/trans.png)
[英]regex to replace digits of a number with 0 (after 6th digit and before last 4th digit)
[英]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.