代码之家  ›  专栏  ›  技术社区  ›  luvieere

是否有一个regex风格允许我计算*和+运算符匹配的重复次数?

  •  5
  • luvieere  · 技术社区  · 14 年前

    有没有一个正则表达式的风格,让我可以计算的数量重复匹配的 * + 接线员?我特别想知道在.NET平台下是否可能。

    3 回复  |  直到 14 年前
        1
  •  9
  •   polygenelubricants    14 年前

    你很幸运,因为事实上.NETregex做到了这一点(我认为这是非常独特的)。基本上在每个 Match ,每个 Group Captures 那是我做的。

    因此,您可以通过以下方式计算可重复模式与输入匹配的次数:

    • 让它成为一个抓捕小组
      • 如果你想的话,你也可以迭代单个的捕获!

    举个例子:

    Regex r = new Regex(@"\b(hu?a)+\b");
    
    var text = "hahahaha that's funny but not huahuahua more like huahahahuaha";
    foreach (Match m in r.Matches(text)) {
       Console.WriteLine(m + " " + m.Groups[1].Captures.Count);
    }
    

    as seen on ideone.com ):

    hahahaha 4
    huahuahua 3
    huahahahuaha 5
    

    API参考

        2
  •  3
  •   Phil Ross Matt Johnson-Pint    14 年前

    + * Captures 财产 Group 可用于确定匹配的次数。以下示例统计字符串开头的连续小写字母数:

    var regex = new Regex(@"^([a-z])+");
    var match = regex.Match("abc def");
    
    if (match.Success)
    {
        Console.WriteLine(match.Groups[1].Captures.Count);
    }
    
        3
  •  0
  •   Lie Ryan Bryan    14 年前

    吃点东西怎么样 "pref ([a-z]+) suff"

    推荐文章