簡體   English   中英

使用正則表達式解析URL

[英]Parsing a URL using a regular expression

我一直試圖從一個字符串解析一個地址,並為選擇字符串取得了部分成功....

目前我有

Pattern regex = Pattern.compile("[/].*[a-zA-Z](?=\/|:|)", Pattern.DOTALL)

在輸入字符串https://www.google.com/ ,當前模式為我提供了//www.google.com (這有些正確)但是當我嘗試輸入字符串https://www.google.com/search?q=Regular+Expressions&num=1000它給了我//www.google.com/search?q=Regular+Expressions&num

我要做的是解析地址,使其在:/或空格之前結束

我也提出了

Pattern regex = Pattern.compile("[.*/][^/][a-z].*[a-zA-Z](?=\/|:|)", Pattern.DOTALL) 

並且(部分)使用https://google.com:80為我提供/google.com

我究竟做錯了什么?

試試這個正則表達式^.*?\\/\\/([^:\\/\\s]+) ,你要搜索的部分存儲在第1組中。

Pattern pattern = Pattern.compile("^.*?\\/\\/([^:\\/\\s]+)");
Matcher matcher = pattern.matcher("your input url");
while (matcher.find()) {
    System.out.println("Domain: " + matcher.group(1));
}

編輯:通過在表達式之前匹配//修復額外的反斜杠問題。

@NicolasMaltais對此答案的修訂應修復額外/問題(我只顯示第一行代碼):

Pattern pattern = Pattern.compile("^.*?\\/+([^:\\/\\s]+)");

該模式將在地址之前吃掉任意數量的/字符。 因此,也可以處理類似“file:///my_file.txt”的URL(如果您只關心文件路徑的開頭)。

暫無
暫無

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

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