日期:2014-05-18  浏览次数:20795 次

大家帮我看一下,这个问题怎么解决
[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
[S]10[/S]

[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
[S]10[/S]

[Q]1+2=?[/Q]
[O]A.1 B.2 C.3[/O]
[S]10[/S]


如上的字符串,我要用正则表达式取出上面三组,怎么样写正则表达式,还有Regex
应该是[Q]到[/S]之间吧,里面有空白换行!

------解决方案--------------------
C# code
   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\n[S]10[/S]
                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
          
            }