asp.net中Regex使用(一)

來源:互聯網
上載者:User

一、限定符:限定符提供了一種簡單方法,用於指定允許特定字元或字元集自身重複出現的次數。限定符始終引用限定符前(左邊)的模式,通常是單個字元,除非使用括弧建立模式組。

(一)非顯示限定符

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使用(二)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.