1

在 C# 中,给定一个格式如下的字符串:

http://10.242.33.210:5000

ftp://52.42.12.52:7000/

如何使用正则表达式仅检索 IP(应丢弃端口)

对于以上两个示例,正则表达式应匹配 10.242.33.210 和 52.42.12.52

4

3 回答 3

3

您可以创建一个Uri并获取它的Host属性,而不是 Regex

Uri url = new Uri("ftp://52.42.12.52:7000/");
Console.Write(url.Host);
于 2012-09-06T05:13:29.217 回答
2

其实很简单:

[\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
于 2012-09-06T05:12:22.643 回答
1
\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
于 2012-09-06T05:14:13.663 回答