9.非打印字符
有不少很有用的非打印字符,偶爾必須使用。下表顯示了用來表示這些非打印字符的轉義序列:
字符 含義
\cx 匹配由x指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。
x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字
符。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價於
[\f\n\r\t\v]。
\S 匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。
\t 匹配一個制表符。等價於 \x09 和 \cI。
\v 匹配一個垂直制表符。等價於 \x0b 和 \cK。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10.字符匹配
句點 (.) 匹配一個字符串中任何單個的打印或非打印字符,除了換行符 (\n) 之外。下面的 Visual Basic Scripting
Edition 正則表達式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等,同樣也可以匹配 'a1c'、'a2c'、a-c'以及
a#c':
/a.c/
等價的 VBScript 正則表達式為:
"a.c"
如果試圖匹配一個包含文件名的字符串,其中句點 (.) 是輸入字符串的一部分,則可以在正則表達式中的句點前面加上一
個反斜槓 (\) 字符來實現這一要求。舉例來說,下面的 Visual Basic Scripting Edition 正則表達式就能匹
配 'filename.ext':
/filename\.ext/
對 VBScript 而言,等價的表達式如下所示:
"filename\.ext"
這些表達式仍然是相當有限的。它們只允許匹配任何單字符。很多情況下,對從列表中匹配特殊字符十分有用。例如,如
果輸入文字中包含用數字表示為Chapter 1, Chapter 2諸如此類的章節標題,你可能需要找到這些章節標題。
括號表達式
可以在一個方括號 ([ 和 ]) 中放入一個或多個單字符,來創建一個待匹配的列表。如果字符被放入括號中括起來,則該
列表稱為括號表達式。括號內和其他任何地方一樣,普通字符代表其本身,也就是說,它們匹配輸入文字中出現的一處自
己。大多數特殊字符在位於括號表達式中時都將失去其含義。這裡有一些例外:
1. ']' 字符如果不是第一項,則將結束一個列表。要在列表中匹配 ']' 字符,請將其放在第一項,緊跟在開始的 '['
後面。
2. '\' 仍然作為轉義符。要匹配 '\' 字符,請使用 '\\'。
括號表達式中所包含的字符只匹配該括號表達式在正則表達式中所處位置的一個單字符。下面的 Visual Basic
Scripting Edition 正則表達式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5':
/Chapter ][12345]/
在 VBScript 中要匹配同樣的章節標題,請使用下面的表達式:
"Chapter [12345]"
請注意單詞 'Chapter' 及後面的空格與括號內的字符的位置關系是固定的。因此,括號表達式只用來指定滿足緊跟在單
詞 'Chapter' 和一個空格之後的單字符位置的字符集合。這裡是第九個字符位置。
如果希望使用范圍而不是字符本身來表示待匹配的字符,則可以使用連字符將該范圍的開始和結束字符分開。每個字符的
字符值將決定其在一個范圍內的相對順序。下面的 Visual Basic Scripting Edition 正則表達式包含了一個等價於上面
所示的括號列表的范圍表達式。
/Chapter [1-5]/
VBScipt 中相同功能的表達式如下所示:
"Chapter [1-5]"
如果以這種方式指定范圍,則開始和結束值都包括在該范圍內。有一點特別需要注意的是,在 Unicode 排序中起始值一定
要在結束值之前。
如果想在括號表達式中包括連字符,則必須使用下述方法之一:
1. 使用反斜槓將其轉義: [\-]
2. 將連字符放在括號列表的開始和結束位置。下面的表達式能匹配所有的小寫字母和連字符:[-a-z],[a-z-]
3. 創建一個范圍,其中開始字符的值小於連字符,而結束字符的值等於或大於連字符。下面兩個正則表達式都滿足這一
要求: [!--],[!-~]
同樣,通過在列表開始處放置一個插入符(^),就可以查找所有不在列表或范圍中的字符。如果該插入符出現在列表的其他
位置,則匹配其本身,沒有任何特殊含義。下面的 Visual Basic Scripting Edition 正則表達式匹配章節號大於 5 的章
節標題:
/Chapter [^12345]/
對 VBScript 則使用:
"Chapter [^12345]"
在上面所示的示例中,表達式將匹配第九個位置處除1, 2, 3, 4, or 5 之外的任何數字字符。因此, 'Chapter 7' 為一
個匹配,同樣 'Chapter 9' 也是如此。
上面的表達式可以使用連字符 (-) 表示。對 Visual Basic Scripting Edition 為:
/Chapter [^1-5]/
或者,對 VBScript 為:
"Chapter [^1-5]"
括號表達式的典型用法是指定對任何大寫或小寫字母字符或任何數字的匹配。下面的 Visual Basic Scripting Edition
表達式給出了這一匹配:
/[A-Za-z0-9]/
等價的 VBScript 表達式為:
"[A-Za-z0-9]"