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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

正則表達(dá)式簡介(13)

2019-11-18 22:23:30
字體:
供稿:網(wǎng)友
13.選擇與編組

選擇允許使用 '|' 字符來在兩個或多個候選項中進行選擇。通過擴展章節(jié)標(biāo)題的正則表達(dá)式,可以將其擴充為不僅僅適用
于章節(jié)標(biāo)題的表達(dá)式。不過,這可沒有想象的那么直接。在使用選擇時,將匹配'|' 字符每邊最可能的表達(dá)式。你可能認(rèn)
為下面的 Visual Basic Scripting Edition 和 VBScript 表達(dá)式將匹配位于一行的開始和結(jié)束位置且后跟一個或兩個數(shù)
字的 'Chapter' 或 'Section':

/^Chapter|Section [1-9][0-9]{0,1}$/
"^Chapter|Section [1-9][0-9]{0,1}$"

不幸的是,真正的情況是上面所示的正則表達(dá)式要么匹配位于一行開始處的單詞 'Chapter',要么匹配一行結(jié)束處的后跟
任何數(shù)字的 'Section'。如果輸入字符串為 'Chapter 22',上面的表達(dá)式將只匹配單詞 'Chapter'。如果輸入字符串
為 'Section 22',則該表達(dá)式將匹配 'Section 22'。但這種結(jié)果不是我們此處的目的,因此必須有一種辦法來使正則表
達(dá)式對于所要做的更易于響應(yīng),而且確實也有這種方法。

可以使用圓括號來限制選擇的范圍,也就是說明確該選擇只適用于這兩個單詞 'Chapter' 和 'Section'。不過,圓括號同
樣也是難處理的,因為它們也用來創(chuàng)建子表達(dá)式,有些內(nèi)容將在后面關(guān)于子表達(dá)式的部分介紹。通過采用上面所示的正則
表達(dá)式并在適當(dāng)位置添加圓括號,就可以使該正則表達(dá)式既可以匹配 'Chapter 1',也可以匹配 'Section 3'。

下面的正則表達(dá)式使用圓括號將 'Chapter' 和 'Section' 組成一組,所以該表達(dá)式才能正確工作。對 Visual Basic
Scripting Edition 為:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

對 VBScript 為:

"^(Chapter|Section) [1-9][0-9]{0,1}$"

這些表達(dá)式工作正確,只是產(chǎn)生了一個有趣的副產(chǎn)品。在 'Chapter|Section' 兩邊放置圓括號建立了適當(dāng)?shù)木幗M,但也導(dǎo)
致兩個待匹配單詞之一都被捕獲供今后使用。由于在上面所示的表達(dá)式中只有一組圓括號,因此只能有一個捕獲的
submatch。可以使用 VBScript 的Submatches 集合或者Visual Basic Scripting Edition 中RegExp 對象的 $1-$9 屬性
來引用這個子匹配。

有時捕獲一個子匹配是所希望的,有時則是不希望的。在說明所示的示例中,真正想做的就是使用圓括號對單
詞 'Chapter' 或 'Section' 之間的選擇編組。并不希望在后面再引用該匹配。實際上,除非真的是需要捕獲子匹配,否
則請不要使用。由于不需要花時間和內(nèi)存來存儲那些子匹配,這種正則表達(dá)式的效率將更高。

可以在正則表達(dá)式模式圓括號內(nèi)部的前面使用 '?:'來防止存儲該匹配供今后使用。對上面所示正則表達(dá)式的下述修改提供
了免除子匹配存儲的相同功能。對 Visual Basic Scripting Edition:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

對 VBScript:

"^(?:Chapter|Section) [1-9][0-9]{0,1}$"

除了 '?:' 元字符,還有兩個非捕獲元字符用于稱之為預(yù)查的匹配。一個為正向預(yù)查,用 ?= 表示, 在任何開始匹配圓括
號內(nèi)的正則表達(dá)式模式的位置來匹配搜索字符串。一個為負(fù)向預(yù)查,用 '?!' 表示,在任何開始不匹配該正則表達(dá)式模式
的位置來匹配搜索字符串。

例如,假定有一個包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文檔。進一步假設(shè)需要更新該
文檔,方法是查找所有對 Windows 95、Windows 98 以及 Windows NT 的引用,并將這些引用更改為 Windows 2000。可以
使用下面的 Visual Basic Scripting Edition 正則表達(dá)式,這是一個正向預(yù)查,來匹配 Windows 95、Windows 98 以及
Windows NT:

/Windows(?=95 |98 |NT )/

在 VBScript 要進行同樣的匹配可以使用下述表達(dá)式:

"Windows(?=95 |98 |NT )"

找到一個匹配后,緊接匹配到的文字(而不包括預(yù)查中使用的字符)就開始對下一次匹配的搜索。例如,如果上面所示的
表達(dá)式匹配到 'Windows 98',則將從 'Windows' 而不是 '98' 之后繼續(xù)查找。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁远县| 益阳市| 布拖县| 高雄县| 新田县| 攀枝花市| 漳平市| 禄劝| 奈曼旗| 兴海县| 晋江市| 广南县| 沿河| 米林县| 平罗县| 平遥县| 青浦区| 津南区| 新和县| 德安县| 沧州市| 托里县| 赤壁市| 丰原市| 如皋市| 明水县| 海南省| 绥宁县| 牟定县| 泾川县| 玉屏| 基隆市| 防城港市| 岑溪市| 岳西县| 承德县| 五华县| 响水县| 日照市| 简阳市| 太白县|