目前我的程序能够通过IP地址使用regex.Replace()来搜索输入字符串中的IP并将其与新的交换保持URL的开头和结尾
因此,以下test1来自“https://11.1.11.11:8080/”> “https://22.2.22.22:8080/”
Regex ipAddress = new Regex("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b", RegexOptions.Compiled);
string test1 = "https://11.1.11.11:8080/";
Console.WriteLine(ipAddress.Replace(test1,"22.2.22.22"));
然而,当我尝试使用主机名时,例如“https://google.com:8080/”> “https://facebook.com:8080/”以下代码找不到主机名? IP地址如何能够找到并替换IP,但主机名却不能?
Regex hostname = new Regex(@"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9]*)\.)*([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9]*)$");
string test2 = "https://google.com:8080/";
Console.WriteLine(hostname.Replace(test1, "facebook.com"));
答案 0 :(得分:0)
您的第二个主机名正则表达式不正确。它正在寻找任意数量的三个重复字符集(a-z,A-Z或0-9),后跟一个句点,在字符串开头的任意次数。然后它会查找任意数量的字符(相同的集合),然后查找字符串的结尾。
我担心我不能建议正则表达式,因为我不知道你的要求,或许看看RegExLib网站(here)?对于常见情况,他们有许多用户提交的正则表达式模式。他们还有一个在线正则表达式测试人员来帮助你(虽然在http://www.regexlib.com/Search.aspx有更好的一个)。
如果您可以提供有关您要替换的内容以及可能输入内容的更多信息(即协议是否始终存在(http / https / ftp等)?)某人将能够提供帮助你需要的模式多一点。