天天看點

正規表達式規則

一 限定符:

   描述:允許特定字元或字元集自身重複出現的次數,作用範圍是限制符左邊第一個字元或者字元集

<col>

符号

作用

範例

*

允許特定字元 &gt;= 0 次

Fo* (x,y代表任意字元)符合:

xFy xFoy xFooy

+

允許特定字元 &gt;= 1 次

Fo+ (x,y代表任意字元)符合:

xFoy xFooy

?

允許特定字元 0 或 1次

Fo? (x,y代表任意字元)符合:

{}

顯式限定符使用花括号 {} 及其中的數字值表示模式出現次數的上下限

ab{2}c (x,y代表任意字元)符合:

xabbcy

{2,} 允許特定字元&gt;=2

ab{2,}c (x,y代表任意字元)符合:

xbbcy xbbbbcy xbbb..bbcy

{0,2}

0&lt;=允許特定符号&lt;=2

注意:{,2}寫法有問題

ab{0,2}c (x,y代表任意字元)符合:

xacy xabcy xabbcy

.

可比對任何單字元

比對任意字元,(空字元除外)

^

指定字元串(或行)的開始

作用範圍在右邊

^C (x,y代表任意字元)符合:

Cx               xCy(不符合)

$

使用 $ 元字元可指定字元串(或行)的結束

W$ (x,y代表任意字元)符合:

xW              xWy(不符合)

\

尋找\号的時候,必須使用反斜杠進行“轉義”

\\     (x,y代表任意字元)符合:

x\y

|

指定“此或彼

a|b   (x,y代表任意字元)符合:

xay xby

( )

模式分組

(abc){2,3} (x,y代表任意字元)符合:

xabcabcy xabcabcabcy

[ ]

① 它隻能使用一個字元,有多個字元的時候,代表任意一個

② 正規表達式元字元在字元類中不做特殊處理,是以這些元字元不需要轉義

③ - 連字元,在字元類中有特殊的含義字元。在(例如)ASCII 或 Unicode 表中出現的順序确定了在範圍中包括的字元

特殊轉意符号

一般字元

除 .$ ^ { [ ( | ) * + ? \ 外,其他字元與自身比對。

\a

與響鈴(警報)\u0007 比對。

\b

在正規表達式中,\b 表示單詞邊界(在 \w 和 \W 之間),不過,在 [] 字元類中,\b 表示倒退符。在替換模式中,\b 始終表示倒退符。

\t

與 Tab 符 \u0009 比對。

\r

與回車符 \u000D 比對。

\v

與垂直 Tab 符 \u000B 比對。

\f

與換頁符 \u000C 比對。

\n

與換行符 \u000A 比對。

\e

與 Esc 符 \u001B 比對。

\040

将 ASCII 字元比對為八進制數(最多三位);如果沒有前導零的數字隻有一位數或者與捕獲組号相對應,則該數字為後向引用。例如,字元 \040 表示空格。

\x20

使用十六進制表示形式(恰好兩位)與 ASCII 字元比對。

\cC

與 ASCII 控制字元比對;例如,\cC 為 Ctrl-C。

\u0020

使用十六進制表示形式(恰好四位)與 Unicode 字元比對。

在後面帶有不識别為轉義符的字元時,與該字元比對。例如,\* 與 \x2A 相同。

字元類

說明

比對除 \n 以外的任何字元。如果已用 Singleline 選項做過修改,則句點字元可與任何字元比對。

[ aeiou ]

與指定字元集中包含的任何單個字元比對。

[^ aeiou ]

與不在指定字元集中的任何單個字元比對。

[0-9a-fA-F]

使用連字号 (–) 允許指定連續字元範圍。

\p{ name }

與 {name} 指定的命名字元類中的任何字元都比對。支援的名稱為 Unicode 組和塊範圍。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing。可以使用 GetUnicodeCategory 方法找到某個字元所屬的 Unicode 類别。

\P{ name }

與在 {name} 中指定的組和塊範圍不包括的文本比對。

\w

與任何單詞字元比對。等效于 Unicode 字元類别 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]。如果用 ECMAScript 選項指定了符合 ECMAScript 的行為,則 \w 等效于 [a-zA-Z_0-9]。

\W

與任何非單詞字元比對。等效于 Unicode 字元類别 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]。如果用 ECMAScript 選項指定了符合 ECMAScript 的行為,則 \W 等效于 [^a-zA-Z_0-9]。

\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

與任何十進制數字比對。對于 Unicode 類别的 ECMAScript 行為,等效于 \p{Nd},對于非 Unicode 類别的 ECMAScript 行為,等效于 [0-9]。

\D

與任何非數字比對。對于 Unicode 類别的 ECMAScript 行為,等效于 \P{Nd},對于非 Unicode 類别的 ECMAScript 行為,等效于 [^0-9]。

斷言

指定比對必須出現在字元串的開頭或行的開頭。。

指定比對必須出現在以下位置:字元串結尾、字元串結尾處的 \n 之前或行的結尾。

\A

指定比對必須出現在字元串的開頭(忽略 Multiline 選項)。

\Z

指定比對必須出現在字元串的結尾或字元串結尾處的 \n 之前(忽略 Multiline 選項)。

\z

指定比對必須出現在字元串的結尾(忽略 Multiline 選項)。

\G

指定比對必須出現在上一個比對結束的地方。與 Match.NextMatch() 一起使用時,此斷言確定所有比對都是連續的。

指定比對必須出現在 \w(字母數字)和 \W(非字母數字)字元之間的邊界上。比對必須出現在單詞邊界上,即出現在由任何非字母數字字元分隔的單詞中第一個或最後一個字元上。

\B

指定比對不得出現在 \b 邊界上。

限定符

指定零個或更多個比對;例如 \w* 或 (abc)*。等效于 {0,}。

指定一個或多個比對;例如 \w+ 或 (abc)+。等效于 {1,}。

指定零個或一個比對;例如 \w? 或 (abc)?。等效于 {0,1}。

{ n }

指定恰好 n 個比對;例如 (pizza){2}。

{ n ,}

指定至少 n 個比對;例如 (abc){2,}。

{ n , m }

指定至少 n 個但不多于 m 個比對。

*?

指定盡可能少地使用重複的第一個比對(等效于 lazy *)。

+?

指定盡可能少地使用重複但至少使用一次(等效于 lazy +)。

??

指定使用零次重複(如有可能)或一次重複 (lazy ?)。

{ n }?

等效于 {n} (lazy {n})。

{ n ,}?

指定盡可能少地使用重複但至少使用 n 次 (lazy {n,})。

{ n , m }?

指定介于 n 次和 m 次之間、盡可能少地使用重複 (lazy {n,m})。