C#Regex URL端口用户名&密码

时间:2017-05-25 20:23:58

标签: c# arrays regex string url

我有一个URL,需要从中提取端口,用户名和密码,并将它们放入一个数组中。它看起来像是在跟随。

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

我可以使用其他方法而无需替换或子串吗?

4 个答案:

答案 0 :(得分: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 :(得分:0)

我不知道C#,但这里适用于Python。这非常简单,所以你应该能够转换。

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

(?P&lt; foo&gt; bar)语法是一个命名的捕获组,当你提取它们时,它会将一个与'bar'模式匹配的变量放入一个名为'foo'的变量中。

答案 2 :(得分: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));

答案 3 :(得分: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?username = 9zu7T54rt6&amp; password = 1Tbliu49iH&amp; type = m3u_plus&amp; output = ts”

没有什么可以阻止你用另一部分重复这个过程。

对于正则表达式,您可以使用Regex.Match https://msdn.microsoft.com/en-us/library/twcw2f1c(v=vs.110).aspx来获取所需的部分。

您可以使用“:\ d {4} /”来获取端口 - 您必须删除前导“:”并尾随“/”;这个“username = \ w * \&amp;”来获取用户名 - 您必须删除前导“username =”并尾随“&amp;”虽然;对于密码,您可以使用“password = \ w * \&amp;” - 您必须删除前导“password =”并尾随“&amp;”虽然。

如果你想试用正则表达式,这个网站https://regex101.com/非常好。