字符类与圆括号中交替选择的选择性
字符类,顾名思义就是某一类字符或者将某些字符分成一类。正则表达式中的字符类用一对方括号([])来表示,比如 [abcd] 或 [0123456789]。事实上,字符类所暗含的意思就是选择性,即“多选一”――不管方括号中包含多少个字符,一对方括号一次只能匹配一个字符。
在正则表达式中,更明显具有选择性的就是交替选择(alternation)。交替选择以竖线(|)表示,竖线两侧的模式可以称之为选项。交替选择必须与一对圆括号连用,即通过圆括号将所有以竖线分隔的选项包围起来。交替选择模式中至少要有两个选项(一个竖线)――此时的选择性可以称之为“二选一”,但也可以包含多个选项――此时的选择性则可以称之为“多选一”。但这里的“多选一”与字符类中的“多选一”不同,这里是指“从多个选项中的选择一个选项”,而不是“从多个字符中选择一个字符”。而选项则可以是任何正则表达式模式。
举例来说,如果用字符类
[a-z]
来测试字符串 abcde,那每次只能返回一个字母,分别是 a、b、c、d 和 e。而如果用交替选择
(abc|de)
来测试同一个字符串,那么(每次都)将返回字符序列 abc。而如果使用另一个交替选择
(\w+|abc)
来测试这个字符串,那么将返回字符序列 abcde。
现在,我们对字符类与交替选择中的选择性就应该非常清楚了。