20.5.2 .NET对于正则表达式的支持
System.Text.RegularExpressions命名空间提供了对正则表达式的支持,主要的类包括Capture、CaptureCollection、Group、GroupCollection、Match、MatchCollection以及Regex,其中除了Regex以外,其他类均为只读类,也均为不可变类,且均无公共构造函数。事实上,它们的构造函数都是内部访问级别,也就是说只有同程序集的类型才可以将它们实例化。
其中CaptureCollection、GroupCollection以及MatchCollection均为集合类,都实现了ICollection和IEnumerable接口,因此可以像使用集合一样使用它们。其中包括使用foreach循环顺序访问集合中的每一个元素,只不过它们都是只读集合,这一点需要注意。
图20-3是类图,从中可以看出它们之间的关系。
图 20-3 .NET正则表达式核心类图
然后,逐一介绍这些核心类的作用和功能,如表20-13所示。
接下来,重点介绍下Regex对象。使用Regex有两种方法,其一是将其实例化,然后调用实例方法;其二是调用静态方法,而不进行实例化。这两种方法是等价的,读者可以自主选择。如果选择实例化Regex对象,那么就有必要了解Regex对象的构造函数以及相应的实例方法,接下来分别进行介绍。
Regex有2个公共构造函数,如表20-14:
从表20-14可以得知,构造函数都有一个pattern参数,表示要使用的正则表达式。Regex是不变对象,也就是说,一旦使用某个正则表达式实例化了一个Regex对象,那么就无法更改该对象的正则表达式了。
我们继续看看Regex类的一些重要的实例方法,如表20-15所示。
接下来是一些方法的静态版本,如表20-16所示。