テキストからポート付きのIPアドレスを抽出したいと思います。
しかし、正規表現を取得して、可能な限り最大の一致する数字 (IP オクテット) を取得する方法がわかりません。たとえば、209 と式 \d{1,3} から、9 だけではなく 209 全体をキャプチャします。
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