文本内容如下:
...............一些字符....................
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秒”中的分钟数。用正则表达式该怎么写呢?大家还有好的方案么?谢谢了
...............一些字符....................
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秒”中的分钟数。用正则表达式该怎么写呢?大家还有好的方案么?谢谢了
第2和第3索引就是你要的
MatchCollection mc = Regex.Matches(yourStr, @"[^\s]+?(?=\s+(V网主叫|V网被叫))", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
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"; //秒
}