如何编写一个正则表达式,允许我匹配和替换主机名或 ip 地址



我正在尝试编写一个正则表达式,该表达式将允许我获取诸如

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" );