ABC1122 (?<tm>[\s\S]+?)A、(?<a>.*?)\s*B、(?<b>.*?)\s*C、(?<c>.*?)\s*D、(?<d>.*)
LZ试试

解决方案 »

  1.   


    using System;using System.Text.RegularExpressions;public class Test
    {
        static void Main(string[] args)
        {
            string strHtml = @"580. 加氢装置在生产中产生的环境污染物主要包括:(  )。
    ①二氧化硫 ②含油污水 ③含烃气体
      A、①、③           B、①               C、②、③           D、①、②、③ ";
            Match m = Regex.Match(strHtml, @"580\.(?<tm>[\s\S]*?)(?<a>A、.*?\s)(?<b>B、.*?\s)(?<c>C、.*?\s)(?<d>D、.*?\s)");
            if (m.Success)
            {
                Console.WriteLine("题目:" + m.Groups["tm"].Value);
                Console.WriteLine("选项" + m.Groups["a"].Value);
                Console.WriteLine("选项:" + m.Groups["b"].Value);
                Console.WriteLine("选项:" + m.Groups["c"].Value);
                Console.WriteLine("选项:" + m.Groups["d"].Value);        }
            /*题目: 加氢装置在生产中产生的环境污染物主要包括:(  )。
    ①二氧化硫 ②含油污水 ③含烃气体选项A、①、③
    选项:B、①
    选项:C、②、③
    选项:D、①、②、③
    */
            Console.ReadKey();
        }
    }
      

  2.   

    System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("ABC1122 (?<tm>[\\s\\S]+?)A、(?<a>.*?)\\s*B、(?<b>.*?)\\s*C、(?<c>.*?)\\s*D、(?<d>.*)");
                System.Text.RegularExpressions.Match m = r.Match("ABC1122 580. 加氢装置在生产中产生的环境污染物主要包括:(  )。 ①二氧化硫 ②含油污水 ③含烃气体 A、①、③     B、①      C、②、③     D、①、②、③ ");
                MessageBox.Show(m.Groups["tm"] + "--" + m.Groups["a"] + "--" + m.Groups["b"] + "--" + m.Groups["c"]+"--"+m.Groups["d"]);
    这样是能得到结果的,LZ看看是不是这个意思
      

  3.   

    楼上的这种方法还是不行啊!更不能用Match m = Regex.Match(strHtml, @"580\.(?<tm>[\s\S]*?)(?<a>A、.*?\s)(?<b>B、.*?\s)(?<);
    这种方法。因为 580这个是题号  不能固定死  我的题是从100到1000多呢 每个题号都不一样的!
      

  4.   

    Match只是告诉你测试可以通过而已,不要题号,那就这样:(?<tm>[\s\S]*?)(?<a>A、.*?\s)(?<b>B、.*?\s)(?<c>C、.*?\s)(?<d>D、.*?\s)
    你自己可以改改试试!
    最好是搞个工具陪你一起玩!