2017-05-25 36 views
0

我有一個URL,需要從中提取端口,用戶名和密碼並將它們放入數組中。它看起來像下面。C#正則表達式URL端口用戶名和密碼

http://myproject.ddns.net:8080/get.php?username=9zu7T54rt6&password=1Tbliu49iH&type=m3u_plus&output=ts

我可以使用沒有取代其他方法或子?

+1

你嘗試過什麼嗎? – Rahul

+0

可能重複[什麼是一個很好的正則表達式來匹配一個URL?](https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url) – Adrian

+1

如果您已經嘗試過某些功能,請將您的代碼發佈到您的問題中。如果您還沒有嘗試過任何東西,請嘗試一下,然後回到我們面前,留下您遇到的具體問題。 –

回答

1

一個在C#的方式

獲取查詢參數

var parsedQuery = HttpUtility.ParseQueryString("http://myproject.ddns.net:8080/get.php?username=9zu7T54rt6&password=1Tbliu49iH&type=m3u_plus&output=ts"); 

然後,下面將給用戶名

parsedQuery["username"] 

對於密碼:

parsedQuery["password"] 

對於端口,您可以使用URI

Uri uri = new Uri("http://myproject.ddns.net:8080/get.php?username=9zu7T54rt6&password=1Tbliu49iH&type=m3u_plus&output=ts"); 

通過

uri.Port 

獲取端口創建任何你需要給俱樂部一個數組或使用。

+1

看起來不錯,但我認爲你需要互聯網連接(我知道我沒有在我的文章中提到過),但我們需要能夠添加鏈接到列表,即使我們是離線的。我們輸入的鏈接是「100%」有效,但我真的很喜歡你的方法,並會記住我的下一個項目:) –

+0

但爲什麼你需要互聯網連接呢?你可以解釋嗎 ? – Tushar

+0

對不起,我認爲它也會檢查它是否可用 –

0

我不知道C#,但這裏有一個適用於Python的。這很簡單,所以你應該能夠轉換。

:(?P<port>[0-9]+).*username=(?P<username>[a-zA-Z0-9]+).*password=(?P<password>[a-zA-Z0-9]+) 

的(θP <富>吧)語法,將放在一個變量匹配模式「酒吧」到一個名爲「富」,當你提取它們的變量命名捕獲組。

0

這裏是用純C#的正則表達式的另一種可能的解決方案:

var url = "http://myproject.ddns.net:8080/get.php?username=9zu7T54rt6&password=1Tbliu49iH&type=m3u_plus&output=ts"; 
var urlRegex = new Regex(@"(?<=(http(s)?://)?\w+(\.\w+)*:)\d+(?=/.*)?"); 
var usernameRegex = new Regex(@"(?<=(\?|&)username=).*?(?=&|$)", RegexOptions.IgnoreCase); 
var passwordRegex = new Regex(@"(?<=(\?|&)password=).*?(?=&|$)", RegexOptions.IgnoreCase); 

Console.WriteLine(urlRegex.Match(url)); 
Console.WriteLine(usernameRegex.Match(url)); 
Console.WriteLine(passwordRegex.Match(url)); 
0

如果有任何部件不改變,例如如果它總是相同的URL,你可以只更換這樣

string str = "http://myproject.ddns.net:8080/get.php?username=9zu7T54rt6&password=1Tbliu49iH&type=m3u_plus&output=ts" 
str.Replace("http://myproject.ddns.net",""); 

這將離開你 「:8080/get.php用戶名= 9zu7T54rt6 &密碼= 1Tbliu49iH &類型= m3u_plus &輸出= TS」

沒有什麼能阻止你用另一節重複這個過程。

至於正則表達式,你可以使用Regex.Match https://msdn.microsoft.com/en-us/library/twcw2f1c(v=vs.110).aspx來獲得你想要的部分。

你可以使用「:\ d {4} /」來獲取端口 - 你必須去掉前導「:」和尾隨「/」;這「用戶名= \ w * \ &」獲取用戶名 - 你必須去掉領先的「用戶名=」和尾隨「&」雖然;和密碼,你可以使用「密碼= \ w * \ &」 - 你必須去掉領先的「密碼=」和尾隨「&」雖然。

如果你想用正則表達式來試驗這個網站https://regex101.com/是相當不錯的。

+0

多數民衆贊成我以前做過它^^但看起來很髒我 –