文本内容如下:
...............一些字符....................
2007/03/02 16:07:26 2分51秒   被叫       成都市    本地      0.00
2007/03/02 21:39:23 1分14秒   V网主叫    成都市    本地      0.00
2007/03/02 22:05:17 8分3秒    V网被叫    成都市    本地      0.00
2007/03/03 18:31:33 1分36秒   被叫       成都市    本地      0.00
2007/03/03 21:38:34 6分0秒    V网被叫    成都市    本地      0.00
2007/03/04 09:37:15 0分14秒   主叫       成都市    本地      0.00
2007/03/04 15:57:45 6分48秒   V网被叫    成都市    本地      0.00
2007/03/04 16:19:57 0分40秒   V网被叫    成都市    本地      0.00
..........................     
  
现在我打算找出包含所有“V网主叫”和“V网被叫”的前面的通话时长,如“1分14秒”“6分0秒”中的分钟数。用正则表达式该怎么写呢?大家还有好的方案么?谢谢了

解决方案 »

  1.   

    string.Split(' ')
    第2和第3索引就是你要的
      

  2.   

    试下string yourStr = richTextBox1.Text;    
    MatchCollection mc = Regex.Matches(yourStr, @"[^\s]+?(?=\s+(V网主叫|V网被叫))", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  3.   

    又看了下,楼主似乎只要分钟数,分和秒分别取出来了,楼主看需要取用吧string yourStr = richTextBox1.Text; 
    MatchCollection mc = Regex.Matches(yourStr, @"(?<min>[^\s]*?)分(?<sec>[^\s]*?)秒(?=\s+(V网主叫|V网被叫))", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
         richTextBox2.Text += m.Groups["min"].Value + "\n";   //分钟
         richTextBox2.Text += m.Groups["sec"].Value + "\n";   //秒
    }