4.6.2 字符集和类
使用字符集可以马上给出比精确匹配功能还要强大的正则表达式。字符集可以用于匹配属于特定类型的任何字符;事实上它们是一种通配符。
首先,可以用字符作为一个通配符来代替除换行符(\n)之外的任一个字符。例如,正则表达式:
.at
可以与"cat"、"sat"和"mat"等进行匹配。通常,这种通配符匹配用于操作系统中的文件名匹配。
但是,使用正则表达式,可以更具体地指明希望匹配的字符类型,而且可以指明字符所属的一个集合。在前面的例子中,正则表达式匹配"cat"和"mat",但也可以匹配"#at"。如果要限定它是a到z之间的字符,就可以像下面这样指明:
[a-z]at
任何包含在方括号([])中的内容都是一个字符类——一个被匹配字符所属的字符集合。请注意,方括号中的表达式只匹配一个字符。
我们可以列出一个集合,例如:
[aeiou]
可以用来表示元音子母。
也可以描述一个范围,正如前面用连字符那样,也可以是一个范围集:
[a-zA-Z]
这个范围集代表任何的大小写字母。
此外,还可以用集合来指明字符不属于某个集。例如:
[^a-z]
可以用来匹配任何不在a和z之间的字符。当把脱字符号(^)包括在方括号里面时,表示否。当该符号用在方括号的外面,则表示另外一个意思,我们稍后将详细介绍。
除了列出了集合和范围,许多预定义字符类也可以在正则表达式中使用,如表4-3所示。