正規表示式

2022-07-31 04:45:10 字數 2515 閱讀 3871

正規表示式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")構成的文字序列,可以是單個的字元、字元集合、字元範圍、字元間的選擇或者所有這些元件的任意組合。

下面的**中列舉了構成正規表示式的一些語法規則及其含義。

1) 字元

語法說明

表示式示例

匹配結果

一般字元

匹配自身

abcabc

.匹配任意除換行符"\n"外的字元, 在 dotall 模式中也能匹配換行符

a.cabc

\轉義字元,使後乙個字元改變原來的意思;

如果字串中有字元 * 需要匹配,可以使用 \* 或者字符集[*]。

a\.c

a\\c

a.ca\c

[...]

字符集(字元類),對應的位置可以是字符集中任意字元。

字符集中的字元可以逐個列出,也可以給出範圍,如 [abc] 或 [a-c],

第乙個字元如果是 ^ 則表示取反,如 [^abc] 表示除了abc之外的其他字元。

a[bcd]e

abe 或 ace 或 ade

\d數字:[0-9]

a\dc

a1c\d

非數字:[^\d]

a\dc

abc\s

空白字元:[《空格》\t\r\n\f\v]

a\sc

a c\s

非空白字元:[^\s]

a\sc

abc\w

單詞字元:[a-za-z0-9]

a\wc

abc\w

非單詞字元:[^\w]

a\wc

a c2) 數量詞(用在字元或 (...) 之後)

語法說明

表示式示例

匹配結果

*匹配前乙個字元 0 或無限次

abc*

ab 或 abccc

+匹配前乙個字元 1 次或無限次

abc+

abc 或 abccc

?匹配前乙個字元 0 次或 1 次

abc?

ab 或 abc

匹配前乙個字元 m 次

abcabbc

匹配前乙個字元 m 至 n 次,m 和 n 可以省略,若省略 m,則匹配 0 至 n 次;

若省略 n,則匹配 m 至無限次

abcabc 或 abbc

3) 邊界匹配

語法說明

表示式示例

匹配結果

^匹配字串開頭,在多行模式中匹配每一行的開頭

^abc

abc$

匹配字串末尾,在多行模式中匹配每一行的末尾

abc$

abc\a

僅匹配字串開頭

\aabc

abc\z

僅匹配字串末尾

abc\z

abc\b

匹配 \w 和 \w 之間

a\b!bc

a!bc

\b[^\b]

a\bbc

abc4) 邏輯、分組

語法說明

表示式示例

匹配結果

|| 代表左右表示式任意匹配乙個,優先匹配左邊的表示式

abc|def

abc 或 def

(...)

括起來的表示式將作為分組,分組將作為乙個整體,可以後接數量詞

(abc)

abcabc

(?p...)

分組,功能與 (...) 相同,但會指定乙個額外的別名

(?pabc)

abcabc

\引用編號為 的分組匹配到的字串

(\d)abc\1

1abe1 或 5abc5

(?p=name)

引用別名為 的分組匹配到的字串

(?p\d)abc(?p=id)

1abe1 或 5abc5

5) 特殊構造(不作為分組)

語法說明

表示式示例

匹配結果

(?:...)

(…) 的不分組版本,用於使用 "|" 或後接數量詞

(?:abc)

abcabc

(?ilmsux)

ilmsux 中的每個字元代表一種匹配模式,只能用在正規表示式的開頭,可選多個

(?i)abc

abc(?#...)

# 後的內容將作為注釋被忽略。

abc(?#comment)123 

abc123

(?=...)

之後的字串內容需要匹配表示式才能成功匹配

a(?=\d)

後面是數字的 a

(?!...)

之後的字串內容需要不匹配表示式才能成功匹配

a(?!\d)

後面不是數字的 a

(?<=...)

之前的字串內容需要匹配表示式才能成功匹配

(?<=\d)a

前面是數字的a

(?之前的字串內容需要不匹配表示式才能成功匹配

(?前面不是數字的a

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

非負整數 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正規表示式 編寫正規表示式

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