正規表示式

2021-09-12 01:14:20 字數 4192 閱讀 7808

正規表示式(regular expression,在**中常簡寫為 regex、regexp 或 re),又稱 正規表示式、正規表示法、正規表示式、規則表示式、常規表示法,是電腦科學的乙個概念。正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些匹配某個模式的文字。

不同的正規表示式符號如何數學上的 +

++,−

-−,×

\times

×,÷\div

÷ 一樣,具體不同的優先順序。

正規表示式優先順序如下:

優先順序符號

最高\

()(?:)(?=)

*+?

^$中介字元

次最低串接(即相鄰字元連線在一起)

最低|

正規表示式

等價說明

[abc]a|b|c匹配列出的任意字元。示例匹配字元 『a』 或 『b』 或 『c』。

[^abc]

匹配未列出的任意字元。示例匹配字元 『a』、『b』、『c』 以外的任意字元。

[a-z]

匹配指定範圍內的任意字元。示例匹配字元 『a』 到 『z』 範圍內的任意小寫字母字元。

[^a-z]

匹配任何不在指定範圍內的任意字元。 示例匹配字元 『a』 到 『z』 範圍之外的任意字元。

[a-za-z]

匹配指定範圍內的任意字元。範圍組合。示例匹配字元 『a』 到 『z』 範圍內的任意小寫字母字元 和 『a』 到 『z』 範圍內的任意大寫字母字元。

.[^\r\n]匹配除 「\r」 「\n」 之外的任何單個字元。要匹配包括 「\r」「\n」 在內的任何字元,請使用像 「(.

(...)

匹配滿足條件的子串,如(zone)能夠匹配this is test zone, 1zone, zoneee, zona.3個完整 「zone」 的位置。

(aa|bb)

匹配滿足條件的子串。示例匹配子串 『aa』 或 『bb』

a?

非貪心匹配。只匹配滿足條件的,長度最小的串。如[0-9]+是匹配 1−∞

1 - \infty

1−∞ 個阿拉伯數字,但是[0-9]+?則匹配滿足[0-9]+的最小串。

a*

匹配前面的子表示式零次或多次。示例匹配 0−∞

0 - \infty

0−∞ 個 『a』

a+

匹配前面的子表示式一次或多次。示例匹配 1−∞

1 - \infty

1−∞ 個 『a』

aaaa匹配確定的 3 次。示例匹配 『aaa』

aaaa|aaaa|aaaaa|...匹配確定的 3−∞

3 - \infty

3−∞ 次。示例匹配 『aaa』, 『aaaa』, 『aaaaa』, …

aaaa|aaaa|aaaaa|aaaaaa匹配確定的 3−6

3 - 6

3−6 次。示例匹配 『aaa』, 『aaaa』, 『aaaaa』, 『aaaaaa』

^

匹配輸入字串的開始位置。

$

匹配輸入字串的結束位置。

部分符號有特殊的意義,需要使用\進行轉義

特殊符號

等價說明

\b

匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」 可以匹配 「never」 中的 「er」,但不能匹配 「verb」 中的 「er」。

\b

匹配非單詞邊界。「er\b」 能匹配 「verb」 中的 「er」,但不能匹配 「never」 中的 「er」。

\cx

匹配由 x 指明的控制字元。x 的值必須為 a-z 或 a-z 之一。否則,將 c 視為乙個原義的 「c」 字元。控制字元的值等於 x 的值最低 5 位元(即對 3210 進製的餘數)。例如,\cm 匹配乙個 control-m 或回車符。\ca 等效於 \u0001, \cb 等效於 \u0002, 等等…

\d[0-9]匹配乙個數字字元。注意 unicode 正規表示式會匹配全形數字字元。

\d[^0-9]匹配乙個非數字字元。

\f\x0c\cl匹配乙個換頁符。

\n\x0a\cj匹配乙個換行符。

\r\x0d\cm匹配乙個回車符。

\s[\f\n\r\t\v]匹配任何空白字元,包括空格、製表符、換頁符等等。注意 unicode 正規表示式會匹配全形空格符。

\s[^ \f\n\r\t\v]匹配任何非空白字元。

\t\x09\ci匹配乙個製表符。

\v\x0b\ck匹配乙個垂直製表符。

\w[a-za-z0-9_]匹配包括下劃線的任何單詞字元。注意 unicode 正規表示式會匹配中文字元。

\w[^a-za-z0-9_]匹配任何非單詞字元。

\xnn

十六進製制轉義字元序列。匹配兩個十六進製制數字 nn 表示的字元。例如,"\x41" 匹配 「a」。"\x041" 則等價於 「\x04&1」。正規表示式中可以使用 ascii 編碼。

\num

向後引用(back-reference)乙個子字串(substring),該子字串與正規表示式的第 num 個用括號圍起來的捕捉群(capture group)子表示式(subexpression)匹配。其中 num 是從 1 開始的十進位制正整數,其上限可能是 9、31、99 甚至無限。例如:"(.)\1" 匹配兩個連續的相同字元。

\n

標識乙個八進位制轉義值或乙個向後引用。如果 \n 之前至少 n 個獲取的子表示式,則 n 為向後引用。否則,如果 n 為八進位制數字(0-7),則 n 為乙個八進位制轉義值。

\nm

3 位八進位制數字,標識乙個八進位制轉義值或乙個向後引用。如果 \nm 之前至少有 nm 個獲得子表示式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為乙個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進位制數字(0-7),則 \nm 將匹配八進位制轉義值 nm。

\nml

如果 n 為八進位制數字(0-3),且 m 和 l 均為八進位制數字(0-7),則匹配八進位制轉義值 nml。

\un

\0

匹配 null 字元。ascii 為 0x00。注意 unicode 正規表示式會匹配 \u2400 字元。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...