2017-05-18 41 views
-2

我打算编写一个c#程序 来检查IP地址为 的测试文件,并将它们逐行添加到新测试文件 。C#从测试文件中提取IP地址

在c#中这样做的最好方法是什么? (操作系统我应该使用其他语言)

有人可以共享一个有效的代码片段。

正则表达式可以处理这个吗?并涵盖所有情况?

或根据具体情况处理不同的文件。

该文本文件可以是电子邮件,甚至IIS日志文件?

在此先感谢您的回复

+1

可能重复的[正则表达式匹配DNS主机名或IP地址?](http://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-地址) –

+0

对不起,让我检查它是否有帮助 – abmv

回答

1

您可以用许多不同的语言来做到这一点。在C#中的正则表达式可以正常工作。有很多方法可以做到,具体取决于许多因素,如输入文件的大小。一种简单的方法是读取源文件的所有行,使用正则表达式遍历每行以识别匹配,如果匹配,则将行写入目标文件。

这样的事情可能是一个起点。

public static string Foo() 
{ 
    // see http://stackoverflow.com/questions/4890789/regex-for-an-ip-address 
    Regex ip = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"); 

    string[] inputLines = File.ReadAllLines("sourcefile.txt"); 
    List<string> outputLines = new List<string>(); 

    foreach (string line in inputLines) 
    { 
     MatchCollection result = ip.Matches(line); 
     if (result[0].Success) outputLines.Add(line); 
    } 

    if (outputLines.Count > 0) 
    { 
     File.AppendAllLines("destinationfile.txt", outputLines); 
    } 
}