我正在尝试编写一个正则表达式,该表达式将允许我获取诸如
https://10.1.10.10:8080/abc?
所以在这里我想提取和操作 10.1.10.10 部分
或
https://www.google.com:80808/abc?
在这里,我想要 www.google.com 部分
目前,我可以使用IP地址执行此操作,但是每当使用主机名时,我都无法弄清楚如何阻止" https/http"部分与" 8080"和" abc"一起干扰。我希望这将允许我使用 regex.replace 轻松换出 URI 的主机部分。
您可以使用 UriBuilder 并更改主机部分:
String[] strings = {"https://10.1.10.10:8080/abc?", "https://www.google.com:8080/abc?"};
foreach (string s in strings)
{
var b = new UriBuilder(s);
b.Host = "test";
Console.WriteLine(b.Uri.ToString());
}
演示 C#
试试这个模式:
^[^:]+://([^:/]+)
然后访问第一个捕获组。
演示
这样
的东西对你有用吗?
var url = @"https://www.google.com:80808/abc?";
var replacement = "hey there";
var regex = new Regex( @"^(w+://)(?:.*?)(:d+/w+W)$" );
var updated = regex.Replace( url, $"$1{replacement}$2" );