#@DD=用户[6] 
@E1=医疗[3][SIREN.WAV] 
@E2=抢劫[2] 
@E3=火警[1] 
#@E4=键盘事件[1] 我要的字段 
1:# 符号可有可无 
2:@ 符号可有可无 
3:那个16进制的数 如"DD",是两位的 
4:文字 
5:[ ]中的数字 1-9,可有可无 
6:[ ]中的文件名 一个文件名,可有可无

解决方案 »

  1.   

    try#?@?[0-9a-fA-F]{2}=[\u4e00-\u9fa5]+(?:\[[1-9]\])?(?:\[[^\]]*\])另:如果4.文字不是只有中文,还包括什么
      

  2.   

    sorry,上面的最后漏了一个“?”#?@?[0-9a-fA-F]{2}=[\u4e00-\u9fa5]+(?:\[[1-9]\])?(?:\[[^\]]*\])?
      

  3.   

    再请问下
    我用match.Groups[0].Value要得到1,2,3,4,5,6
    怎么写得啊?
    有个什么子匹配?
      

  4.   

    string eventstr = dt.Rows[0]["EVENTS"].ToString();
      string regex_str = @"#?@?" + casecode + @"=[\u4e00-\u9fa5]+(?:\[[1-9]\])?(?:\[[^\]]*\])?";
      Regex expression = new Regex(regex_str, RegexOptions.None);
    Match match = expression.Match(eventstr);
    是这样写得匹配吗?
    只有match.Groups[0].Value有值
    我想要match.Groups[1].Value的值为#,match.Groups[2].Value的值为*怎么写的啊?我对正则表达式 一点也搞不清除
      

  5.   

    trystring yourStr = .............;
    MatchCollection mc = Regex.Matches(yourStr, @"(#)?(@)?([0-9a-fA-F]{2})=([\u4e00-\u9fa5]+)(\[[1-9]\])?(\[[^\]]*\])?");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups[1].Value + "\n";
        richTextBox2.Text += m.Groups[2].Value + "\n";
        richTextBox2.Text += m.Groups[3].Value + "\n";
        richTextBox2.Text += m.Groups[4].Value + "\n";
        richTextBox2.Text += m.Groups[5].Value + "\n";
        richTextBox2.Text += m.Groups[6].Value + "\n";
    }
      

  6.   

    非捕获组,前面以为你只是要匹配整体,所以没必要捕获到组里,后来你要求分别捕获,所以就去掉它,换成捕获组了至于捕获组的概念,可以参考一下
    http://www.cnblogs.com/lxcnn/archive/2007/06/10/777975.aspx
      

  7.   

    谢谢!!
    string yourStr = .............;
    MatchCollection mc = Regex.Matches(yourStr, @"(#)?(@)?([0-9a-fA-F]{2})=([\u4e00-\u9fa5]+)(\[[1-9]\])?(\[[^\]]*\])?");只是其中的([0-9a-fA-F]{2})这两位也是我已知的参数codestr,我想这样去匹配:Regex.Matches(yourStr, @"(#)?(@)?(" + codestr+ @")=([\u4e00-\u9fa5]+)(\[[1-9]\])?(\[[^\]]*\])?");
    可是有一些值匹配不到,如D1,D2 好象以D开始的都不行,怎么办?
      

  8.   

    string regex_str = @"(#)?(@)?" + casecode + @"=([^\[#@]*)(?:\[(\d*)])?(?:\[([^#@]*)\])?";
    我这样用了:)