在Regex中发生了什么匹配

时间:2014-10-30 22:20:23

标签: c# regex

让我们想象一下我有一些正则表达式:

(a)|(b)|(c)

如何识别已触发的匹配?是否有某种匹配指数?

我可以检查 null 的所有组,或者将全局值字段与组值字段进行比较,或将模式分成多个并通过行检查“ if ”,但它有点蹩脚,并提供额外的复杂性。正则表达式没有一些有限的状态值吗?

1 个答案:

答案 0 :(得分:3)

当然可以这样做:

match.Groups[1].Success // true or false
match.Groups[2].Success // true or false
match.Groups[3].Success // true or false

您还可以为群组命名,以便更轻松地遵循:

(?<foo>a)|(?<bar>b)|(?<baz>c)
match.Groups["foo"].Success // true or false
match.Groups["bar"].Success // true or false
match.Groups["baz"].Success // true or false