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

首頁 > 學院 > 開發設計 > 正文

選擇與編組

2019-11-18 15:58:54
字體:
來源:轉載
供稿:網友

 

選擇答應使用 '' 字符來在兩個或多個候選項中進行選擇。通過擴展章節標題的正則表達式,可以將其擴充為不僅僅適用于章節標題的表達式。不過,這可沒有想象的那么直接。在使用選擇時,將匹配'' 字符每邊最可能的表達式。你可能認為下面的 JScript 和 VBScript 表達式將匹配位于一行的開始和結束位置且后跟一個或兩個數字的 'Chapter' 或 'Section':

/^ChapterSection [1-9][0-9]{0,1}$/"^ChapterSection [1-9][0-9]{0,1}$"

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

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

下面的正則表達式使用圓括號將 'Chapter' 和 'Section' 組成一組,所以該表達式才能正確工作。對 JScript 為:

/^(ChapterSection) [1-9][0-9]{0,1}$/

對 VBScript 為:

"^(ChapterSection) [1-9][0-9]{0,1}$"

這些表達式工作正確,只是產生了一個有趣的副產品。在 'ChapterSection' 兩邊放置圓括號建立了適當的編組,但也導致兩個待匹配單詞之一都被捕捉供今后使用。由于在上面所示的表達式中只有一組圓括號,因此只能有一個捕捉的 submatch。可以使用 VBScript 的Submatches 集合或者JScript 中RegEXP 對象的 $1-$9 屬性來引用這個子匹配。

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

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

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

對 VBScript:

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

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

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

/Windows(?=95 98 NT )/

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

"Windows(?=95 98 NT )"

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



上一篇:定位符

下一篇:優先權順序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沛县| 那坡县| 舒城县| 普定县| 肇源县| 漯河市| 河南省| 石屏县| 斗六市| 迁安市| 贡山| 新津县| 抚顺县| 门源| 南皮县| 贡觉县| 枣强县| 微山县| 华亭县| 宁安市| 长沙县| 东平县| 雅安市| 崇信县| 黄浦区| 桃源县| 措美县| 平塘县| 南宁市| 北碚区| 嘉鱼县| 靖宇县| 彰化县| 开封县| 石景山区| 金坛市| 无棣县| 北京市| 奉节县| 郁南县| 明光市|