一、限定符:限定符提供了一種簡單方法,用於指定允許特定字元或字元集自身重複出現的次數。限定符始終引用限定符前(左邊)的模式,通常是單個字元,除非使用括弧建立模式組。 (一)非顯示限定符
1、 |
*,描述“出現 0 或多次”。 |
2、 |
+,描述“出現 1 或多次”。 |
3、 |
?,描述“出現 0 或 1 次”。 |
(二)顯式限定符 顯式限定符使用花括弧 {n,m} 及其中的數字值表示模式出現次數的上下限。 如果僅指定一個數字,則表示次數上限,例如,x{5} 將準確匹配 5 個 x 字元 (xxxxx),如果數字後跟一個逗號,如 x{5,},表示匹配任何出現次數大於 4 的 x 字元。 二、元字元 .(句點或點)元字元是最簡單但最常用的一個字元。它可匹配任何單字元。如果要指定某些模式可包含任意組合的字元,使用句點非常有用,但一定要在特定長度範圍內。 ^ 元字元可指定字串(或行)的開始。 $ 元字元可指定字串(或行)的結束。通過將這些字元添加到模式的開始和結束處,可強制模式僅匹配精確匹配的輸入字串。如果 ^ 元字元用在方括弧 [ ] 指定的字元類的開頭,將有特殊的含義。具體內容後。 \ (反斜線)元字元既可根據特殊含義“轉義”字元,也可指定預定義集合元字元的執行個體。同樣,具體內容見下。為了在Regex中包括文字樣式的元字元,必須使用反斜線進行“轉義”。例如,如果要匹配以“c:\”開始的字串,可使用:^c:\\。注意,要使用 ^ 元字元指出字串必須以此模式作為開始,然後用反斜線元字元轉義文字反斜線。 |(管道)元字元用於交替指定,特別用於在模式中指定“此或彼”。例如,a|b 將匹配包含“a”或“b”的任何輸入內容,這與字元類 [ab] 非常類似。 ( ) 括弧用於給模式分組。它允許使用限定符讓一個完整模式出現多次。為了便於閱讀,或分開匹配特定的輸入部分,可能允許分析或重新設定格式。 三、字元類: 字元類是Regex中的“迷你”語言,在方括弧 [ ] 中定義。在運算式中使用字元類時,可在模式的此位置使用其中任何一個字元(但只能使用一個字元,除非使用了限定符)。請注意,不能使用字元類定義單詞或模式,只能定義單個字元。 通過在括弧中使用連字號 - 來定義字元的範圍。連字號在字元類中有特殊的含義(不是在Regex中,因此,準確地說它不能叫Regex元字元),且僅在連字號不是第一個字元時,連字號才在字元類中有特殊含義。要使用連字號指定任何數值數字,可以使用 [0-9]。小寫字母也一樣,可以使用 [a-z],大寫字母可以使用 [a-z]。連字號定義的範圍取決於使用的字元集。因此,字元在(例如)ascii 或 unicode 表中出現的順序確定了在範圍中包括的字元。如果需要在範圍中包括連字號,將它指定為第一個字元。例如:[-.?] 將匹配 4 個字元中任何一個字元(注意,最後的字元是個空格)。另請注意,Regex元字元在字元類中不做特殊處理,所以這些元字元不需要轉義。考慮到字元類是與其他Regex語言分開的一種語言,因此字元類有自己的規則和文法。 如果使用字元 ^ 作為字元類的第一個字元來否定此類,也可以匹配字元類成員以外的任何字元。因此,要匹配任何非母音字元,可以使用字元類 [^aaeeiioouu]。注意,如果要否定連字號,應將連字號作為字元類的第二個字元,如 [^-]。記住,^ 在字元類中的作用與它在Regex模式中的作用完全不同。 四、預定義的集合元字元
| 元字元 |
等效字元類 |
\a |
匹配鈴聲(警報);\u0007 |
\b |
匹配字元類外的字邊界,它匹配退格字元,\u0008 |
\t |
匹配製表符,\u0009 |
\r |
匹配斷行符號符,\u000d |
\w |
匹配垂直定位字元,\u000b |
\f |
匹配換頁符,\u000c |
\n |
匹配新行,\u000a |
\e |
匹配轉義符,\u001b |
\040 |
匹配 3 位 8 進位 ascii 字元。\040 表示空格(十進位數 32)。 |
\x20 |
使用 2 位 16 進位數匹配 ascii 字元。此例中,\x2- 表示空格。 |
\cc |
匹配 ascii 控制字元,此例中是 ctrl-c。 |
\u0020 |
使用 4 位 16 進位數匹配 unicode 字元。此例中 \u0020 是空格。 |
\* |
不代表預定義字元類的任一字元都只作為該字元本身對待。因此,\* 等同於 \x2a(是文字 *,不是 * 元字元)。 |
\p{name} |
匹配已命名字元類“name”中的任一字元。支援名稱是 unicode 組和區塊範圍。例如,ll、nd、z、isgreek、isboxdrawing 和 sc(貨幣)。 |
\p{name} |
匹配已命名字元類“name”中不包括的文本。 |
\w |
匹配任意單詞字元。對於非 unicode 和 ecmascript 實現,這等同於 [a-za-z_0-9]。在 unicode 類別中,這等同於 [\p{ll}\p{lu}\p{lt}\p{lo}\p{nd}\p{pc}]。 |
\w |
\w 的否定,等效於 ecmascript 相容集合 [^a-za-z_0-9] 或 unicode 字元類別 [^\p{ll}\p{lu}\p{lt}\p{lo}\p{nd}\p{pc}]。 |
\s |
匹配任意空白地區字元。等效於 unicode 字元類 [\f\n\r\t\v\x85\p{z}]。如果使用 ecmascript 選項指定 ecmascript 相容方式,\s 等效於 [ \f\n\r\t\v] (請注意前置空格)。 |
\S |
匹配任意非空白地區字元。等效於 unicode 字元類別 [^\f\n\r\t\v\x85\p{z}]。如果使用 ecmascript 選項指定 ecmascript 相容方式,\s 等效於 [^ \f\n\r\t\v] (請注意 ^ 後的空格)。 |
\d |
匹配任意十進位數字。在 ecmascript 方式下,等效於 unicode 的 [\p{nd}]、非 unicode 的 [0-9]。 |
\d |
匹配任意非十進位數字。在 ecmascript 方式下,等效於 unicode 的 [\p{nd}]、非 unicode 的 [^0-9]。 |
五、asp.net中建立和使用RegularexPressions類(見《asp.net中Regex使用(二)》 |