在 C# 中,给定一个格式如下的字符串:
http://10.242.33.210:5000
ftp://52.42.12.52:7000/
如何使用正则表达式仅检索 IP(应丢弃端口)
对于以上两个示例,正则表达式应匹配 10.242.33.210 和 52.42.12.52
您可以创建一个Uri并获取它的Host属性,而不是 Regex
Uri url = new Uri("ftp://52.42.12.52:7000/");
Console.Write(url.Host);
其实很简单:
[\d.]+
将匹配一系列数字和点。在您的情况下,IP 地址没有端口。您可以通过尝试符合 IP 的外观(0 到 255 之间的数字,或点之间只有一到三位数字)来使其更复杂,但是如果您所期望的只是像上面那样输入,那么这应该没问题。
快速 Powershell 测试:
PS> $tests = 'http://10.242.33.210:5000','ftp://52.42.12.52:7000/'
PS> $tests | %{ $_ -match '[\d.]+' | Out-Null; $Matches}
Name Value
---- -----
0 10.242.33.210
0 52.42.12.52
\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b
相同但更短(来自zerkms):
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b