我正在使用此代码来计算正则表达式模式包含的组数。
Dim GroupCount As Integer = Regex.Match(input, pattern).Groups.Count
当模式匹配输入时,它返回成功:
Dim GroupCount As Integer = Regex.Match(" something ", "( )something( )").Groups.Count
但如果模式不匹配,它总是返回1。
Dim GroupCount As Integer = Regex.Match("ABC", "( )something( )").Groups.Count
在任何情况下,我需要的是函数来计算模式中的组数。
答案 0 :(得分:2)
Dim pattern As New Regex("( )something( )")
Dim groupCount As Integer = pattern.GetGroupNumbers().Length
通过从Regex
对象获取结果,它与任何特定匹配无关,这正是您想要的。
您可能希望从结果中减去1
,因为整个字符串也是一个组(在索引0
处),具体取决于您要查找的内容。
答案 1 :(得分:0)
如果我找到你的话,你需要在任何单词中计算()的实例。如果我是正确的,那么这应该对你有帮助;
Dim s As String = "( )yourstring()somevalue( )getit()"
'A sample string.
Dim rgx As New Regex("(?<BraceGroup>\([ ]*\))", RegexOptions.Singleline)
'Regex pattern to match '( )' or '()'.
Dim matches As MatchCollection = rgx.Matches(s)
'Get all matches.
Dim count As Integer = matches.Count
'Number of matches.
Console.WriteLine(String.Format("Total '() captures' found : {0}", count))
Ideone demo here。
答案 2 :(得分:-1)