国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

微軟的正則表達(dá)式教程(三):字符匹配

2024-05-04 11:07:35
字體:
供稿:網(wǎng)友

普通字符

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

最簡單的正則表達(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è)換頁符。等價(jià)于 /x0c 和 /cL。
/n 匹配一個(gè)換行符。等價(jià)于 /x0a 和 /cJ。
/r 匹配一個(gè)回車符。等價(jià)于 /x0d 和 /cM。
/s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價(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]"

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东方市| 田林县| 盐城市| 屏南县| 集贤县| 静安区| 龙山县| 景德镇市| 平湖市| 岱山县| 三门峡市| 泰和县| 澳门| 滁州市| 双桥区| 修文县| 德钦县| 昭通市| 泉州市| 河南省| 平谷区| 丰都县| 肥乡县| 彭山县| 阿拉尔市| 左云县| 临沧市| 衡东县| 台东县| 三都| 洛南县| 新竹县| 容城县| 集安市| 永城市| 明水县| 青海省| 武山县| 中牟县| 郧西县| 砀山县|