正則表達式語法_第1頁
正則表達式語法_第2頁
正則表達式語法_第3頁
正則表達式語法_第4頁
正則表達式語法_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、正則表達式語法· Visual Studio 2008· Visual Studio 2005“正則表達式”描述在搜索文本正文時要匹配的一個或多個字符串。該表達式可用作一個將字符模式與要搜索的字符串相匹配的模板。正則表達式包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。特殊字符下表包含了單字符元字符的列表以及它們在正則表達式中的行為。注意若要匹配這些特殊字符之一,必須首先轉義字符,即,在字符前面加反斜杠字符 ()。例如,若要搜索“+”文本字符,可使用表達式“+”。元字符行為示例*零次或多次匹配前面的字符或子表達式。等效于 0,。zo* 與“z”和“

2、zoo”匹配。+一次或多次匹配前面的字符或子表達式。等效于 1,。zo+ 與“zo”和“zoo”匹配,但與“z”不匹配。?零次或一次匹配前面的字符或子表達式。等效于 0,1。 當 ?緊隨任何其他限定符(*、+、?、n、n, 或 n,m)之后時,匹配模式是非貪婪的。非貪婪模式匹配搜索到的、盡可能少的字符串,而默認的貪婪模式匹配搜索到的、盡可能多的字符串。zo? 與“z”和“zo”匹配,但與“zoo”不匹配。o+? 只與“oooo”中的單個“o”匹配,而 o+ 與所有“o”匹配。do(es)? 與“do”或“does”中的“do”匹配。匹配搜索字符串開始的位置。如果標志中包括 m(多行搜索)字符,

3、 還將匹配 n 或 r 后面的位置。如果將 用作括號表達式中的第一個字符,則會對字符集求反。d3 與搜索字符串開始處的 3 個數字匹配。 abc 與除 a、b 和 c 以外的任何字符匹配。$匹配搜索字符串結尾的位置。如果標志中包括 m(多行搜索)字符, 還將匹配 n 或 r 前面的位置。d3$ 與搜索字符串結尾處的 3 個數字匹配。.匹配除換行符 n 之外的任何單個字符。若要匹配包括 n 在內的任意字符,請使用諸如 sS 之類的模式。a.c 與“abc”、“a1c”和“a-c”匹配。標記括號表達式的開始和結尾。1-4 與“1”、“2”、“3”或“4”匹配。aAeEiIoOuU 與任何非元音字符

4、匹配。標記限定符表達式的開始和結尾。a2,3 與“aa”和“aaa”匹配。()標記子表達式的開始和結尾。可以保存子表達式以備將來之用。A(d) 與“A0”至“A9”匹配。保存該數字以備將來之用。|指示在兩個或多個項之間進行選擇。z|food 與“z”或“food”匹配。(z|f)ood 與“zood”或“food”匹配。/表示 JScript 中的文本正則表達式模式的開始或結尾。在第二個“/”后添加單字符標志可以指定搜索行為。/abc/gi 是與“abc”匹配的 JScript 文本正則表達式。g(全局)標志指定查找模式的所有匹配項,i(忽略大小寫)標志使搜索不區分大小寫。將下一字符標記為特殊

5、字符、文本、反向引用或八進制轉義符。n 與換行符匹配。( 與“(”匹配。 與“”匹配。大多數特殊字符在括號表達式內出現時失去它們的意義,并表示普通字符。有關更多信息,請參見匹配字符的列表中的“括號表達式中的字符”。元字符下表包含了多字符元字符的列表以及它們在正則表達式中的行為。元字符行為示例b與一個字邊界匹配;即字與空格間的位置。erb 與“never”中的“er”匹配,但與“verb”中的“er”不匹配。B非邊界字匹配。 erB 與“verb”中的“er”匹配,但與“never”中的“er”不匹配。d數字字符匹配。等效于 0-9。在搜索字符串“12 345”中,d2 與“12”和“34”匹配

6、。d 與“1”、“2”、“3”、“4”和“5”匹配。D非數字字符匹配。等效于 0-9。D+ 與“abc123 def”中的“abc”和“def”匹配。w與以下任意字符匹配:A-Z、a-z、0-9 和下劃線。等效于 A-Za-z0-9_。在搜索字符串“The quick brown fox”中,w+ 與“The”、“quick”、“brown”和“fox”匹配。W與除 A-Z、a-z、0-9 和下劃線以外的任意字符匹配。等效于 A-Za-z0-9_。 在搜索字符串“The quick brown fox”中,W+ 與“”和所有空格匹配。xyz字符集。與任何一個指定字符匹配。abc 與“plain

7、”中的“a”匹配。xyz反向字符集。與未指定的任何字符匹配。abc 與“plain”中的“p”、“l”、“i”和“n”匹配。a-z字符范圍。匹配指定范圍內的任何字符。a-z 與“a”到“z”范圍內的任何小寫字母字符匹配。a-z反向字符范圍。與不在指定范圍內的任何字符匹配。a-z 與不在范圍“a”到“z”內的任何字符匹配。n正好匹配 n 次。n 是非負整數。o2 與“Bob”中的“o”不匹配,但與“food”中的兩個“o”匹配。n,至少匹配 n 次。n 是非負整數。* 與 0, 相等。+ 與 1, 相等。o2, 與“Bob”中的“o”不匹配,但與“foooood”中的所有“o”匹配。n,m匹配至

8、少 n 次,至多 m 次。n 和 m 是非負整數,其中 n <= m。逗號和數字之間不能有空格。? 與 0,1 相等。在搜索字符串“1234567”中,d1,3 與“123”、“456”和“7”匹配。(模式)與模式 匹配并保存匹配項。您可以從由 JScript 中的 exec Method返回的數組元素中檢索保存的匹配項。若要匹配括號字符 ( ),請使用“(”或者“)”。(Chapter|Section) 1-9 與“Chapter 5”匹配,保存“Chapter”以備將來之用。(?:模式)與模式 匹配,但不保存匹配項;即不會存儲匹配項以備將來之用。這對于用“or”字符 (|) 組合模式

9、部件的情況很有用。industr(?:y|ies) 與 industry|industries 相等。(?=模式)積極的預測先行。找到一個匹配項后,將在匹配文本之前開始搜索下一個匹配項。不會保存匹配項以備將來之用。(?=.*d).4,8$ 對密碼應用以下限制:其長度必須介于 4 到 8 個字符之間,并且必須至少包含一個數字。在該模式中,.*d 查找后跟有數字的任意多個字符。對于搜索字符串“abc3qr”,這與“abc3”匹配。從該匹配項之前(而不是之后)開始,.4,8 與包含 4-8 個字符的字符串匹配。這與“abc3qr”匹配。 和 $ 指定搜索字符串的開始和結束位置。這將在搜索字符串包含匹

10、配字符之外的任何字符時阻止匹配。(?!模式)消極的預測先行。匹配與模式 不匹配的搜索字符串。找到一個匹配項后,將在匹配文本之前開始搜索下一個匹配項。不會保存匹配項以備將來之用。b(?!th)w+b 與不以“th”開頭的單詞匹配。在該模式中,b 與一個字邊界匹配。對于搜索字符串“ quick ”,這與第一個空格匹配。(?!th) 與非“th”字符串匹配。這與“qu”匹配。從該匹配項開始,w+ 與一個字匹配。這與“quick”匹配。cx匹配 x 指示的控制字符。x 的值必須在 A-Z 或 a-z 范圍內。如果不是這樣,則假定 c 就是文本“c”字符本身。cM 與 Ctrl+M 或一個回車符匹配。x

11、n匹配 n,此處的 n 是一個十六進制轉義碼。十六進制轉義碼必須正好是兩位數長。允許在正則表達式中使用 ASCII 代碼。x41 與“A”匹配。x041 等效于后跟有“1”的“x04”(因為 n 必須正好是兩位數)。num匹配 num,此處的 num 是一個正整數。這是對已保存的匹配項的引用。(.)1 與兩個連續的相同字符匹配。n標識一個八進制轉義碼或反向引用。如果 n 前面至少有 n 個捕獲子表達式,那么 n 是反向引用。否則,如果 n 是八進制數 (0-7),那么 n 是八進制轉義碼。(d)1 與兩個連續的相同數字匹配。nm標識一個八進制轉義碼或反向引用。如果 nm 前面至少有 nm 個捕

12、獲子表達式,那么 nm 是反向引用。如果 nm 前面至少有 n 個捕獲子表達式,則 n 是反向引用,后面跟有文本 m。如果上述情況都不存在,當 n 和 m 是八進制數字 (0-7) 時,nm 匹配八進制轉義碼 nm。11 與制表符匹配。nml當 n 是八進制數字 (0-3),m 和 l 是八進制數字 (0-7) 時,匹配八進制轉義碼 nml。011 與制表符匹配。un匹配 n,其中 n 是以四位十六進制數表示的 Unicode 字符。u00A9 與版權符號 (©) 匹配。非打印字符下表包含表示非打印字符的轉義序列。字符匹配等效于f換頁符。x0c 和 cLn換行符。x0a 和 cJr回

13、車符。x0d 和 cMs任何空白字符。其中包括空格、制表符和換頁符。 fnrtvS任何非空白字符。 fnrtvtTab 字符。x09 和 cIv垂直制表符。x0b 和 cK優先級順序正則表達式的計算方式與算術表達式非常類似;即從左到右進行計算,并遵循優先級順序。下表按從高到低的順序包含了正則表達式運算符的優先級順序。運算符說明轉義符(), (?:), (?=), 括號和中括號*、+、?、n、n,、n,m限定符、$、任何元字符定位點和序列|替換字符具有高于替換運算符的優先級,例如,允許“m|food”匹配“m”或“food”。創建正則表達式Visual Studio 2010“正則表達式”描述在

14、搜索文本正文時要匹配的一個或多個字符串。正則表達式可用作與要搜索的文本相比較的字符模式。正則表達式的結構與所創建的算術表達式的結構類似。較大的表達式可由小的表達式通過使用各種元字符和運算符進行組合而創建。正則表達式的各組成部分可以是單個字符、字符集、字符范圍或在幾個字符之間選擇。也可以是這些組成部分的任意組合。構造正則表達式通過在一對分隔符之間放置表達式的各種組成部分,就可以構建正則表達式。在 JScript 中,分隔符是一對正斜杠 (/) 字符,如以下示例所示。復制/expression/正則表達式示例下表包含典型正則表達式的示例。正則表達式說明/s*$/匹配空行。/d2-d5/匹配由兩位數

15、字、一個連字符再加五位數字組成的 ID 號。/<s*(S+)(s>*)?>sS*<s*/1s*>/匹配 HTML 標記。普通字符最簡單的正則表達式是與搜索字符串相比較的單個普通字符。例如,單字符正則表達式 A 會始終匹配字母 A,無論其會出現在搜索字符串的哪個位置。以下是 JScript 單字符正則表達式的一些示例。 復制/a/7/M/可以將多個單字符組合起來以形成較長的表達式。例如,正則表達式 /the/ 會匹配以下搜索字符串中的“the”:“the”、“there”、“other”和“over the lazy dog”。無需使用任何串聯運算符。只需連續輸入字

16、符即可。元字符除普通字符之外,正則表達式還可以包含“元字符”。例如,元字符 d,它與數字字符相匹配。有關更多信息,請參見正則表達式語法。普通字符包括沒有顯式指定為元字符的所有可打印和不可打印字符。這包括所有大小寫字母、所有數字、所有標點符號和一些符號。匹配任意字符句點字符 (.) 匹配任何單個打印或除換行符 (n) 以外的字符串中的非打印字符。/a.c/ 正則表達式可匹配“aac”、“abc”、“acc”、“adc”、“a1c”、“a2c”、“a-c”和“a#c”。要匹配搜索字符串中包含一個句點 (.),您可以在句點前面加一個反斜杠 () 字符表達式中。表達式 /filename.ext/ 匹

17、配“filename.ext”。匹配字符列表可以通過在方括號 中放置一個或多個單個字符,創建匹配字符的列表。 括號表達式中的任何字符均僅與正則表達式中緊鄰括號表達式的單個字符相匹配。例如,/Chapter 12345/ 表達式匹配“Chapter 1”、“Chapter 2”、“Chapter 3”、“Chapter 4”和“Chapter 5”。要使用范圍代替字符本身來表示匹配字符,可以使用連字符 (-)。表達式 /Chapter 1-5/ 與 /Chapter 12345/ 等效。若要查找不在列表或范圍內的所有字符,請將插入符號 () 放在列表的開頭。例如,表達式 /aAeEiIoOuU/

18、 匹配任何非元音字符。有關更多信息,請參見匹配字符的列表。限定符可以使用“限定符”指定其中的單個字符或字符集重復指定次數的正則表達式。限定符引用在其前面并與其緊鄰(左側)的表達式。限定符位于大括號 中,并包含指示出現次數上下限的數值。例如,c1,2 匹配 1 個或 2 個字母 c。僅指定一個數字時,除非其后緊跟一個逗號,否則表示上限。例如,c3 匹配 3 個字符 c,而 c5, 匹配 5 個或更多字母 c。還可以使用單字符限定符,如下表所示。限定符顯式限定符含義*0,匹配上一個元素零次或多次。+1,匹配上一個元素一次或多次。?0,1匹配前面的元素零次或一次。以下是一些表達式示例及其匹配的搜索字

19、符串。正則表達式限定符的含義匹配/Chapter 1-90-90,/ 或/Chapter 1-90-9*/匹配 0-9 零次或多次。“Chapter 1”、“Chapter 25”、“Chapter 401320”/Chapter 0-91,2/匹配 0-9 一次或兩次。“Chapter 0”、“Chapter 03”、“Chapter 1”、“Chapter 25”、“Chapter 40”/Chapter 1-90-90,1/ 或/Chapter 1-90-9?/匹配 0-9 零次或一次。“Chapter 1”、“Chapter 25”、“Chapter 40”有關更多信息,請參見JScr

20、ipt 中的限定符。行邊界和字邊界通過“定位點”,您可以指定正則表達式必須位于搜索字符串的開頭或結尾,或者位于搜索字符串中行或字的開頭或結尾位置,以形成匹配。有關更多信息,請參見定位點。指定替換項“|”字符指定表示匹配的兩個或多個替換項。例如,JScript 正則表達式 /(Chapter|Section) 1-9/ 匹配以下內容:“Chapter 1”、“Chapter 9”和“Section 2”。有關更多信息,請參見替換和子表達式。使用子匹配項在正則表達式中使用括號可創建子表達式。程序可檢索生成的子匹配項。有關更多信息,請參見替換和子表達式。可以從正則表達式和替換字符串中引用子表達式。有

21、關更多信息,請參見JScript 中的反向引用。正則表達式編程Visual Studio 2010可以在 JScript 中使用正則表達式搜索字符串中的模式、替換文本以及提取子字符串。搜索以下 JScript 示例查找某個單詞的所有匹配項。創建該正則表達式的語句為var re = /w+/g;/w+/ 模式指定匹配以下一個或多個任意字符:A-Z、a-z、0-9 和下劃線字符。模式之后的 g(全局)標志,指示搜索操作應查找該模式的所有匹配項,而不僅僅是第一個匹配項。還可以使用以下 JScript 替換語法。var re = new RegExp("w+", "g&q

22、uot;);要檢索每個匹配項,exec 方法 將從 lastIndex 位置繼續搜索,直到返回 Null。VBC#C+F#JScript復制不支持該語言或沒有可用的代碼示例。以下示例僅查找第一個匹配項。因為未設置全局 (g) 標志,搜索操作將從搜索字符串的起始位置開始。VBC#C+F#JScript復制不支持該語言或沒有可用的代碼示例。替換在以下示例中,“a”將替換“the”的匹配項。但不會替換實例“The”,因為正則表達式標志中未包含 i(忽略大小寫)標志。該示例使用 replace 方法。VBC#C+F#JScript復制不支持該語言或沒有可用的代碼示例。提取子字符串在正則表達式模式中放置

23、括號以創建可存儲以供將來使用的子匹配項。在以下示例中,該模式包含三個子匹配項。子匹配字符串與每個匹配項一起顯示。exec 方法 將返回一個數組。數組元素 0 包含了完整的匹配項,而元素 1 到 n 包含子匹配項。VBC#C+F#JScript復制不支持該語言或沒有可用的代碼示例。標志在 JScript 正則表達式 /abc/gim 中,g 指示全局標志、i 指示忽略大小寫標志,而 m 指示多行標志。下表顯示了允許的標志。JScript 標志如果標志存在g查找搜索字符串中該模式的所有匹配項,而不僅僅是第一個匹配項。i搜索不區分大小寫。m 匹配 n 或 r 之后的位置,而$ 匹配 n 或 r 之前

24、的位置。無論標志是否存在, 均匹配搜索字符串開頭的位置,而 $ 均匹配搜索字符串結尾的位置。附加功能還可以使用以下附加編程功能。功能說明compile 方法 (Visual Studio - JScript)將正則表達式編譯為內部格式,從而更快地執行。 test 方法測試搜索字符串內是否存在模式。 search 方法返回首個匹配項的位置。請參見正則表達式對象Visual Studio 2010其他版本 · Visual Studio 2008· Visual Studio 2005此對象包含正則表達式模式以及標識如何應用該模式的標志。復制/ The explicit con

25、structor for a Regular Expression object.function RegExp(pattern : String ,flags : String)function RegExp(regexObj : System.Text.RegularExpressions.Regex)/ The implicit constructor for a Regular Expression object./pattern/flags參數圖案必選。要使用的正則表達式模式。如果使用語法 1,則模式必須為字符串。如果使用語法 2,模式將由“/”字符分隔。flags可選。如果使用語法

26、 1,則標志必須處于字符串中。如果使用語法 2,標志字符將緊接在最后一個“/”字符之后。可以組合使用的可用標志有:· g(全局搜索出現的所有模式)· i(忽略大小寫)· m(多行搜索)regexObj必選。包含要使用的正則表達式模式的 Regex 對象。備注正則表達式對象不應與全局 RegExp 對象混淆。它們雖然看起來相似,但也可以很容易地加以區分。正則表達式對象的屬性只包含有關一個特定正則表達式實例的信息,而全局 RegExp 對象的屬性則包含有關所發生的每一匹配的不斷更新的信息。正則表達式對象存儲用于搜索字符組合的字符串的模式。當創建正則表達式對象后,會將該對象傳遞到字符串方法,或者給字符串傳遞正則表達式對象的方法。有關最近執行的搜索的信息存儲在全局 RegExp 對象中。當搜索字符串頻繁更改或未知時(例如從用戶輸入導出的字符串),應使用語法 1。當您提前知道搜索字符

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論