|
正则表达式中的这些元字符,可能让你觉得如果没有一个表很难记住它们的关系。这就需要一个优先级的表,表明模式中
哪一部分应当结合在一起。这和操作符的优先级表有些不同,正则表达式的优先级表更简单,只有4 个级别。本节,将回
顾Perl 在模式中使用的所有的元字符。
1.在此优先级表的最顶端是括号:(()),在分组和引用内存值的时候使用。括号内部的任何部分比括号外的部分结合更紧
密。
2.第二级是数量词。这里有星号(*), 加号(+),问号(?)以及由花括号表示的数量词,如{5,15}, {3, }, {5}等。它们通常
和前一项元素结合。
3.第三级的是锚定和序列(sequence)。锚定包括(^) 表明字符串的开头,($)表明结尾,(\b)词界符,(\B)非词界符。序列(一
个元素紧接着一个元素)实际上是一种操作,虽然它没有使用元字符。这段话的含义是一个单词中的字母结合更紧密,就
像锚定紧贴字母一样。
4.优先级最低的是竖线(|),表示或。由于其优先级最低,它通常将模式划分成几个部分。它在优先级最底端是因为我们希
望像|/fred|barney/里面的字母比或(|)结合更紧密。如果或(|)的优先级比序列的优先级更高,那么,上述模式的含义是匹配fre,
接着是d 或者b, 然后是arney。因此,或(|)的优先级最低,字母序列的优先级要高些。
除了优先级表外,还有被称为原子(atoms)的东西,它们组成模式最基本的块。它们是单个字符,字符类,以及后引用
(backreference)。 |
|