有个string,里面格式如下:from:XXXX
to:XXXX
msg:XXXXXXXXXXXX
怎么用正则取出:后面的?谢谢

解决方案 »

  1.   

    trystring yourStr = ............;
    MatchCollection mc = Regex.Matches(yourStr, @"(?<=:).*");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  2.   

    可以
    谢谢lxcnn(过客) ,能具体解释下 @"(?<=:).*"么?
    看不太懂- -!
      

  3.   

    (?<=:).*(?<=:)  负向预搜索,指所在位置左侧为“:”,只做为一个条件存在,不匹配任何字符
    .* .小数点可以匹配除了换行符(\n)以外的任意一个字符,*表达式不出现或出现任意次,这里就是一直匹配到回车换行为止
     
      

  4.   

    (?<=   )
     零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
     
    这意思是不是先匹配<= 后面的,但是在匹配结果里不显示,如
    (?<=from:)就是只先匹配from:
      

  5.   

    零宽度正回顾后发断言,-_-#,这个是MS的定义吧,也不知道谁翻译的,看着就犯晕关于预搜索,看下这个帖子吧,会有助于你理解的
    http://community.csdn.net/Expert/topic/5410/5410564.xml?temp=.1138422