我想从文本中提取带有端口的 IP 地址。
但我不知道如何让正则表达式捕获最大可能匹配的数字(IP 八位字节)。例如从 209 和表达式 \d{1,3} 捕获整个 209 而不是仅 9。
Regex rgx = new Regex(@".*(?<ip>(?:[12]?\d{1,2}\.){3}[12]?\d{1,2})\s*(?<port>\d{2,4}).*");
string textWithIPs = "209.90.238.251 3128 HTTPS Anonymous [United States Proxy] United States Washington Renton 84.5% 58.240.224.186 80 HTTP None [China Proxy] China Jiangsu Nanjing 98.4% ";
foreach (Match m in rgx.Matches(textWithIPs))
{
MessageBox.Show("ip: " + m.Groups["ip"].Value + " port: " + m.Groups["port"].Value);
}
预期输出:
ip: 209.90.238.251 port: 3128
ip: 58.240.224.186 port: 80