正则表达式用于搜索表达式的所有文件和子目录,并仅返回第一行匹配

时间:2011-08-26 00:43:37

标签: regex

我需要一个正则表达式实用程序,它将搜索指定的目录并仅返回每个文件的第一行,或者返回第一行的特殊13位数字。

在c#或vb.net或vb6中使用正则表达式有一种简单有效的方法吗? 我试图搜索的代码是:000999D5,但我想要返回的13位数字只在第一行。

谢谢, 马克

1 个答案:

答案 0 :(得分:2)

我无法想象一个现成的API请求来执行此操作,因此您必须自己编写代码。这里没什么特别的。

public class ScanDirectory
{
    public void WalkDirectory(string directory)
    {
        WalkDirectory(new DirectoryInfo(directory));
    }

    private void WalkDirectory(DirectoryInfo directory)
    {
        // Scan all files in the current path
        foreach (FileInfo file in directory.GetFiles())
        {
            // Do something with each file.
        }

        DirectoryInfo [] subDirectories = directory.GetDirectories();

        // Scan the directories in the current directory and call this method 
        // again to go one level into the directory tree
        foreach (DirectoryInfo subDirectory in subDirectories)
        {
            WalkDirectory(subDirectory);
        }
    }
}        

(代码来自此处:http://www.codeproject.com/KB/cs/ScanDirectory.aspx

在每个文件中,您都必须阅读第一行。您可以使用

执行此操作
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt");
String firstLine = file.ReadLine();
if (null != firstLine)
{
  // do regexp comparison
}

正则表达式比较应如下所示:

    string input = "0123456789132";

    // Here we call Regex.Match.
    Match match = Regex.Match(input, @"([0-9]{13})",
        RegexOptions.IgnoreCase);

    // Here we check the Match instance.
    if (match.Success)
    {
           // DO your stuff
    }

您可能需要更改正则表达式以符合您的确切要求,因为目前还不是很清楚。