[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
10[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
10[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
10
如上的字符串,我要用正则表达式取出上面三组,怎么样写正则表达式,还有Regex
应该是[Q]到[/S]之间吧,里面有空白换行!

解决方案 »

  1.   

       string pattern = @"(?im)\[Q\]([^\]]+)\[/Q\]\s*\[O\]([^\]]+)\[/O\]\s*\[S\]([^\]]+)\[/S\]";
                string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));//读取文档
                foreach (Match m in Regex.Matches(tempStr, pattern))
                {
                    //循环输出 三次
                    string value = m.Value;//[Q]1+2=?[/Q]\r\n[O]A.1 B.2 C.3[/O]\r\n10
                    string question = m.Groups[1].Value;//1+2=?
                    string option = m.Groups[2].Value;//A.1 B.2 C.3
                    string s = m.Groups[3].Value;//10
              
                }