Regex를 사용하여 텍스트 파일에서 IP 주소 만 추출하고 싶습니다.
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
예를 들어,이 그림에서는이 문자열 192.168.0.1과 일치하는 IP 주소 만 원합니다. 등등. 각 일치 항목을 별도의 변수에 저장하고 싶습니다.
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 줄을 건너 뛰면 좋을 것입니다.
나는 이것이 충분하다고 생각합니다.
const string ipPattern = @"^\s*(192\.168\.\d{1,3}\.\d{1,3})";
var ipRegex = new Regex(ipPattern);
var ipAddresses192168 = File.ReadAllLines(@"C:\Test\Result.txt")
.Skip(3) // Skip 3 lines
.Where(line => ipRegex.IsMatch(line))
.Select(line => ipRegex.Match(line).Groups[1].Value);
foreach (var ipAddress in ipAddresses192168)
{
Console.WriteLine(ipAddress);
}
로 시작하는 IP 주소 만 추출 192.168
하고 첫 번째 줄 3 개를 건너 뜁니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다