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

C#-RegEx-获取两行之间的字符串,c#,regex,text,match,C#,Regex,Text,Match,我已经为这个问题争论了好几天了 问题:如何在C#中的两行之间提取多个与搜索条件匹配的字符串 以下是我当前的流程: 读取文件的所有行 text_file = "C:\test.txt"; string[] file_text = File.ReadAllLines(text_file); 循环浏览文件的每一行并搜索匹配项 foreach (string line in file_text) { Regex r1 = new Regex(@"Processor\(s\):\s+.+\n\

我已经为这个问题争论了好几天了

问题:如何在C#中的两行之间提取多个与搜索条件匹配的字符串

以下是我当前的流程:

  • 读取文件的所有行

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

    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);
        }
    }
    
  • 以下是示例文本:

    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
    
  • 问题:我使用了网站“RegExr”和“Regex101”,这表明处理器名称应该在“Groups[1]中捕获,但当我尝试将其转储到消息框时,似乎没有捕获到任何内容

    任何建议都将不胜感激


    谢谢大家!

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

    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);
    

    将文件读入一个行数组,并使用正则表达式匹配多行。这是不可能的。如果你想读入一个完整的文件,把它读入一个变量,然后用你的正则表达式在全文中换行。谢谢!我遵循了Wiktor和你的建议,我能够提取数据!我面临的唯一问题是它只抢了一场比赛,而不是所有的比赛。现在想弄清楚。