高手们帮我看看
    string Week = "周一|周二|周三|周四|周五|周六|周日";
    string WeekPattern="("+Week+")?";    GroupCollection time = Regex.Match(input, WeekPattern, RegexOptions.Compiled).Groups;    for (int i = 0; i < time.Count; i++)
    {
        Response.Write("time[" + i + "].Value:" + time[i].Value + "<br/>");
    }
   若input为“周一”,输出的两个结果都为周一,
   若input为“在周一”,输入的两个结果都为空,请问这是什么原因,该如何解决呢,

解决方案 »

  1.   

    因为Group[0]返回的是你匹配的整个字符串 Group[1]Group[2]……才是你的正则中捕获的组的内容
      

  2.   

    string WeekPattern="("+Week+")?"; 
    这个问号去掉就可以了。
    string WeekPattern="("+Week+")"; 
      

  3.   

     string WeekPattern="("+Week+")"; 
      

  4.   

    多谢...
    string WeekPattern="("+Week+")?"; 
    我是想匹配Week不出现或出现一次啊
      

  5.   


     string strstrMusicTopContent = @"<td width=""17%"" height=""28"" bgcolor=""#FFFFFF"" class=""border""><a href=""(?<url>[^""]+)""[^>]*>";
            MatchCollection MT = Regex.Matches(strMusicTopText, strstrMusicTopContent, RegexOptions.IgnoreCase | RegexOptions.Compiled);
     foreach (Match mm in MT)
            {
              strTopArr[xxx] = mm.Groups["url"].Value.ToString().Trim();        }给你写个例子就知道了
      

  6.   

    也就是说如果你的正则表达式正确的话就应该是string str = mm.Groups["Week"].Value.ToString().Trim();
      

  7.   

     time[0]是返回匹配的整个字符串,要匹配的是“在周一”,那匹配得到的整个字符串应该是“周一”啊,为什么没有结果呢
      

  8.   

    因为你用了 ? 说明匹配零次或一次
    而且你的Regex.Match( 是去到的第一个匹配 所以会出现空的情况
    string Week = "周一|周二|周三|周四|周五|周六|周日";
    string WeekPattern = "(" + Week + ")?";
    string input = "在周二";
    MatchCollection mc = Regex.Matches(input, WeekPattern, RegexOptions.Compiled);
    for (int j = 0; j < mc.Count; j++)
    {
        GroupCollection time = mc[j].Groups;
        for (int i = 0; i < time.Count; i++)
        {
            Response.Write("Match["+j+"] time[" + i + "].Value:" + time[i].Value + " <br/>");
        }
    }
      

  9.   

    我不明白的是为什么string WeekPattern="("+Week+")?";中留着那个?匹配"在周一"这个字符串就匹配不到了,而我想匹配Week零次或一次
      

  10.   

    多谢wackyboy 的回复,突然茅塞顿开,
    我还想问一下:mc中,按索引值顺序,只要碰到第一个不是空的,那么这个是匹配整个字符串得到的结果,
    这么理解对吧