C# - RegEx - 在两行之间获取字符串

时间:2016-03-24 15:47:09

标签: c# regex text match

我几天来一直在和这个问题作斗争。

问题:如何在C#中的两行之间拉出符合我搜索条件的多个字符串?

这是我目前的流程:

  1. 读取文件的所有行。

    text_file = "C:\test.txt";
    string[] file_text = File.ReadAllLines(text_file);
    
  2. 循环浏览文件的每一行并搜索匹配

    foreach (string line in file_text)
    {
        Regex r1 = new Regex(@"Processor\(s\):\s+.+\n\s+(.+)\nBIOS Version:");
    
        Match match1 = r1.Match(line);
    
        if (match1.Success)
        {
            string processor = match1.Groups[1].Value;
            // Just to see if I matched anything
            System.Windows.MessageBox.Show(processor);
        }
    }
    
  3. 以下是示例文字:

    Processor(s):              1 Processor(s) Installed.
                               [01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2826 Mhz
    BIOS Version:              Phoenix Technologies LTD 6.00, 7/30/2013
    
  4. 问题:我使用了网站" RegExr"和#34; Regex101"这表明处理器名称应该在" Groups [1]"但是当我尝试将其转储到消息框时,似乎没有捕获任何内容。

    非常感谢任何建议!

    谢谢!

1 个答案:

答案 0 :(得分:2)

更改代码,将所有文件读入单个字符串变量,然后针对该代码运行正则表达式:

text_file = "C:\test.txt";
string file_text = File.ReadAllText(text_file);

Regex r1 = new Regex(@"Processor\(s\):\s+.+\n\s+(.+)\nBIOS Version:");

Match match1 = r1.Match(file_text);