普通字符由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數(shù)字,所有標(biāo)點(diǎn)符號(hào)以及一些符號(hào)。

          最簡(jiǎn)單的正則表達(dá)式是一個(gè)單獨(dú)的普通字符,可以匹配所搜索字符串中的該字符本身。例如,單字符模式 'A' 可以匹配所搜索字符串中任何位置出現(xiàn)的字母 'A'。這里有一些單字符正則表達(dá)式模式的示例:

          /a/ /7/ /M/

          等價(jià)的 VBScript 單字符正則表達(dá)式為:

          "a" "7" "M"

          可以將多個(gè)單字符組合在一起得到一個(gè)較大的表達(dá)式。例如,下面的 JScript 正則表達(dá)式不是別的,就是通過組合單字符表達(dá)式 'a'、'7'以及 'M' 所創(chuàng)建出來的一個(gè)表達(dá)式。

          /a7M/

          等價(jià)的 VBScript 表達(dá)式為:

          "a7M"

          請(qǐng)注意這里沒有連接操作符。所需要做的就是將一個(gè)字符放在了另一個(gè)字符后面。

          特殊字符

          有不少元字符在試圖對(duì)其進(jìn)行匹配時(shí)需要進(jìn)行特殊的處理。要匹配這些特殊字符,必須首先將這些字符轉(zhuǎn)義,也就是在前面使用一個(gè)反斜杠 (\)。下表給出了這些特殊字符及其含義:

          特殊字符 說明
          $ 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,請(qǐng)使用 \$。
          ( ) 標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。子表達(dá)式可以獲取供以后使用。要匹配這些字符,請(qǐng)使用 \( 和 \)。
          * 匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請(qǐng)使用 \*。
          + 匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請(qǐng)使用 \+。
          . 匹配除換行符 \n之外的任何單字符。要匹配 .,請(qǐng)使用 \。
          [ 標(biāo)記一個(gè)中括號(hào)表達(dá)式的開始。要匹配 [,請(qǐng)使用 \[。
          ? 匹配前面的子表達(dá)式零次或一次,或指明一個(gè)非貪婪限定符。要匹配 ? 字符,請(qǐng)使用 \?。
          \ 將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或后向引用、或八進(jìn)制轉(zhuǎn)義符。例如, 'n' 匹配字符 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。
          ^ 匹配輸入字符串的開始位置,除非在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符集合。要匹配 ^ 字符本身,請(qǐng)使用 \^。
          { 標(biāo)記限定符表達(dá)式的開始。要匹配 {,請(qǐng)使用 \{。
          | 指明兩項(xiàng)之間的一個(gè)選擇。要匹配 |,請(qǐng)使用 \|。

          非打印字符

          有不少很有用的非打印字符,偶爾必須使用。下表顯示了用來表示這些非打印字符的轉(zhuǎn)義序列:

          字符 含義
          \cx 匹配由x指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 'c' 字符。
          \f 匹配一個(gè)換頁(yè)符。等價(jià)于 \x0c 和 \cL。
          \n 匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。
          \r 匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。
          \s 匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于 [ \f\n\r\t\v]。
          \S 匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
          \t 匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。
          \v 匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。

          字符匹配

          句點(diǎn) (.) 匹配一個(gè)字符串中任何單個(gè)的打印或非打印字符,除了換行符 (\n) 之外。下面的 JScript 正則表達(dá)式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等,同樣也可以匹配 'a1c'、'a2c'、a-c'以及 a#c':

          /a.c/

          等價(jià)的 VBScript 正則表達(dá)式為:

          "a.c"

          如果試圖匹配一個(gè)包含文件名的字符串,其中句點(diǎn) (.) 是輸入字符串的一部分,則可以在正則表達(dá)式中的句點(diǎn)前面加上一個(gè)反斜杠 (\) 字符來實(shí)現(xiàn)這一要求。舉例來說,下面的 JScript 正則表達(dá)式就能匹配 'filename.ext':

          /filename\.ext/

          對(duì) VBScript 而言,等價(jià)的表達(dá)式如下所示:

          "filename\.ext"

          這些表達(dá)式仍然是相當(dāng)有限的。它們只允許匹配任何單字符。很多情況下,對(duì)從列表中匹配特殊字符十分有用。例如,如果輸入文字中包含用數(shù)字表示為Chapter 1, Chapter 2諸如此類的章節(jié)標(biāo)題,你可能需要找到這些章節(jié)標(biāo)題。

          括號(hào)表達(dá)式

          可以在一個(gè)方括號(hào) ([ 和 ]) 中放入一個(gè)或多個(gè)單字符,來創(chuàng)建一個(gè)待匹配的列表。如果字符被放入括號(hào)中括起來,則該列表稱為括號(hào)表達(dá)式。括號(hào)內(nèi)和其他任何地方一樣,普通字符代表其本身,也就是說,它們匹配輸入文字中出現(xiàn)的一處自己。大多數(shù)特殊字符在位于括號(hào)表達(dá)式中時(shí)都將失去其含義。這里有一些例外:

          • ']' 字符如果不是第一項(xiàng),則將結(jié)束一個(gè)列表。要在列表中匹配 ']' 字符,請(qǐng)將其放在第一項(xiàng),緊跟在開始的 '[' 后面。
          • '\' 仍然作為轉(zhuǎn)義符。要匹配 '\' 字符,請(qǐng)使用 '\\'。

          括號(hào)表達(dá)式中所包含的字符只匹配該括號(hào)表達(dá)式在正則表達(dá)式中所處位置的一個(gè)單字符。下面的 JScript 正則表達(dá)式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5':

          /Chapter [12345]/

          在 VBScript 中要匹配同樣的章節(jié)標(biāo)題,請(qǐng)使用下面的表達(dá)式:

          "Chapter [12345]"

          請(qǐng)注意單詞 'Chapter' 及后面的空格與括號(hào)內(nèi)的字符的位置關(guān)系是固定的。因此,括號(hào)表達(dá)式只用來指定滿足緊跟在單詞 'Chapter' 和一個(gè)空格之后的單字符位置的字符集合。這里是第九個(gè)字符位置。

          如果希望使用范圍而不是字符本身來表示待匹配的字符,則可以使用連字符將該范圍的開始和結(jié)束字符分開。每個(gè)字符的字符值將決定其在一個(gè)范圍內(nèi)的相對(duì)順序。下面的 JScript 正則表達(dá)式包含了一個(gè)等價(jià)于上面所示的括號(hào)列表的范圍表達(dá)式。

          /Chapter [1-5]/

          VBScipt 中相同功能的表達(dá)式如下所示:

          "Chapter [1-5]"

          如果以這種方式指定范圍,則開始和結(jié)束值都包括在該范圍內(nèi)。有一點(diǎn)特別需要注意的是,在 Unicode 排序中起始值一定要在結(jié)束值之前。

          如果想在括號(hào)表達(dá)式中包括連字符,則必須使用下述方法之一:

          • 使用反斜杠將其轉(zhuǎn)義:
            [\-]
          • 將連字符放在括號(hào)列表的開始和結(jié)束位置。下面的表達(dá)式能匹配所有的小寫字母和連字符:
            [-a-z] [a-z-]
          • 創(chuàng)建一個(gè)范圍,其中開始字符的值小于連字符,而結(jié)束字符的值等于或大于連字符。下面兩個(gè)正則表達(dá)式都滿足這一要求:
            [!--] [!-~]

          同樣,通過在列表開始處放置一個(gè)插入符(^),就可以查找所有不在列表或范圍中的字符。如果該插入符出現(xiàn)在列表的其他位置,則匹配其本身,沒有任何特殊含義。下面的 JScript 正則表達(dá)式匹配章節(jié)號(hào)大于 5 的章節(jié)標(biāo)題:

          /Chapter [^12345]/

          對(duì) VBScript 則使用:

          "Chapter [^12345]"

          在上面所示的示例中,表達(dá)式將匹配第九個(gè)位置處除1, 2, 3, 4, or 5 之外的任何數(shù)字字符。因此, 'Chapter 7' 為一個(gè)匹配,同樣 'Chapter 9' 也是如此。

          上面的表達(dá)式可以使用連字符 (-) 表示。對(duì) JScript 為:

          /Chapter [^1-5]/

          或者,對(duì) VBScript 為:

          "Chapter [^1-5]"

          括號(hào)表達(dá)式的典型用法是指定對(duì)任何大寫或小寫字母字符或任何數(shù)字的匹配。下面的 JScript 表達(dá)式給出了這一匹配:

          /[A-Za-z0-9]/

          等價(jià)的 VBScript 表達(dá)式為:

          "[A-Za-z0-9]"
          主站蜘蛛池模板: 红原县| 皋兰县| 长垣县| 游戏| 玉门市| 永善县| 黄骅市| 巴林右旗| 右玉县| 灌云县| 驻马店市| 乐至县| 墨脱县| 泽普县| 竹北市| 澳门| 五峰| 通许县| 台州市| 金坛市| 无极县| 乐都县| 克拉玛依市| 盘山县| 林西县| 张掖市| 怀化市| 万宁市| 石楼县| 华阴市| 东海县| 沙坪坝区| 本溪市| 东莞市| 塘沽区| 公安县| 泸水县| 山丹县| 布尔津县| 马关县| 峨山|