Я хочу извлечь только IP-адреса из текстового файла с помощью Regex.
Interface: 192.168.8.100 --- 0x11
Internet Address Physical Address Type
192.168.8.1 a8-7d-12-c6-73-2c dynamic
192.168.8.255 ff-ff-ff-ff-ff-ff static
224.0.0.22 01-00-5e-00-00-16 static
224.0.0.251 01-00-5e-00-00-fb static
224.0.0.252 01-00-5e-00-00-fc static
239.255.102.18 01-00-5e-7f-66-12 static
239.255.255.250 01-00-5e-7f-ff-f1 static
255.255.255.255 ff-ff-ff-ff-ff-ff static
Например, на этом рисунке я хочу только IP-адреса, которые соответствуют этой строке, 192.168. и так далее. и хотел бы сохранить каждое совпадение в отдельной переменной.
string path = @"C:\Test\Result.txt";
StringBuilder buffer = new StringBuilder();
using (var sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
{
if (Regex.IsMatch(sr.ReadLine(), "192"))
buffer.Append(sr.ReadLine());
}
}
Console.WriteLine(buffer.ToString());
Я пробовал этот код, но результаты не очень убедительны.
Также, как мы видим, этот фрагмент кода не обеспечивает все совпадения.
Я также пробовал этот код
// Spilt a string on alphabetic character
string azpattern = "[a-z]+";
string str ="192.168.1.1 tst sysy 192.168.3.1";
string[] result = Regex.Split(str, azpattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500));
for (int i = 0; i < result.Length; i++)
{
Console.Write("{0}", result[i]);
if (i < result.Length - 1)
Console.Write("\n");
}
Но вход вызывает у меня проблему , Я не знаю, как использовать текстовый файл в качестве ввода. Кроме того, результат снова не очень убедителен.
В любом случае, кто-нибудь может мне помочь получить результат в этой форме?
String IP1 = 192.168.0.1;
String IP2 = 192.168.0.2;
и так далее, пока не останется 192 .. .. в файле также было бы здорово, если бы мы пропустили первые 3 строки при чтении, поскольку они бесполезны в моем сценарии.