正規表示式備忘錄

2022-09-12 15:18:25 字數 2738 閱讀 4695

**   說明

.   匹配除換行符以外的任意字元

\w   匹配字母或數字或下劃線或漢字

\s   匹配任意的空白符

\d   匹配數字

\b   匹配單詞的開始或結束

^   匹配字串的開始

$   匹配字串的結束

*       重複零次或更多次

+      重複一次或更多次

?         重複零次或一次

重複n次

重複n次或更多次

重複n到m次

**/語法     說明

\w     匹配任意不是字母,數字,下劃線,漢字的字元

\s      匹配任意不是空白符的字元

\d      匹配任意非數字的字元

\b       匹配不是單詞開頭或結束的位置

[^x]     匹配除了x以外的任意字元

[^aeiou]   匹配除了aeiou這幾個字母以外的任意字元

分類 **/語法 說明

捕獲 (exp)      匹配exp,並捕獲文字到自動命名的組裡

(?exp)    匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp)        匹配exp,不捕獲匹配的文字,也不給此分組分配組號

零寬斷言

(?=exp)       匹配exp前面的位置

(?<=exp)        匹配exp後面的位置

(?!exp)        匹配後面跟的不是exp的位置

(?**/語法     說明

*?      重複任意次,但盡可能少重複

+?     重複1次或更多次,但盡可能少重複

??     重複0次或1次,但盡可能少重複

?    重複n到m次,但盡可能少重複

?       重複n次以上,但盡可能少重複

名稱                       說明

ignorecase(忽略大小寫)          匹配時不區分大小寫。

multiline(多行模式)              更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。(在此模式下,$的精確含意是:匹配\n之前的位置以及字串結束前的位置.)

singleline(單行模式)           更改.的含義,使它與每乙個字元匹配(包括換行符\n)。

ignorepatternwhitespace(忽略空白)     忽略表示式中的非轉義空白並啟用由#標記的注釋。

explicitcapture(顯式捕獲)          僅捕獲已被顯式命名的組

注釋小括號的另一種用途是通過語法(?#comment)來包含注釋。

例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

平衡組(?'group')          把捕獲的內容命名為group,並壓入堆疊(stack)

(?'-group')        從堆疊上彈出最後壓入堆疊的名為group的捕獲內容,如果堆疊本來為空,則本分組的匹配失敗

(?(group)yes|no)     如果堆疊上存在以名為group的捕獲內容的話,繼續匹配yes部分的表示式,否則繼續匹配no部分

(?!)           零寬負向先行斷言,由於沒有字尾表示式,試圖匹配總是失敗

**/語法             說明

\a             報警字元(列印它的效果是電腦嘀一聲)

\b             通常是單詞分界位置,但如果在字元類裡使用代表退格

\t              製表符,tab

\r              回車

\v             豎向製表符

\f              換頁符

\n             換行符

\e             escape

\0nn            ascii**中八進位制**為nn的字元

\xnn            ascii**中十六進製制**為nn的字元

\unnnn         

unicode         **中十六進製制**為nnnn的字元

\cn            ascii控制字元。比如\cc代表ctrl+c

\a             字串開頭(類似^,但不受處理多行選項的影響)

\z             字串結尾或行尾(不受處理多行選項的影響)

\z             字串結尾(類似$,但不受處理多行選項的影響)

\g            當前搜尋的開頭

\p         unicode中命名為name的字元類,例如\p

(?>exp)          貪婪子表示式

(?-exp)       平衡組

(?im-nsx:exp)      在子表示式exp中改變處理選項

(?im-nsx)          為表示式後面的部分改變處理選項

(?(exp)yes|no)       把exp當作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表示式;否則使用no

(?(exp)yes)         同上,只是使用空表示式作為no

(?(name)yes|no)      如果命名為name的組捕獲到了內容,使用yes作為表示式;否則使用no

(?(name)yes)        同上,只是使用空表示式作為no

正規表示式備忘錄

1 匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 s 匹配任意的空白符 d 匹配任意的數字,例如 d表示前面的數字連續出現2次,即2個數字。b 匹配單詞的開始或結束,也就是單詞的分界處,它只匹配乙個字元位置。匹配字串的開始 匹配字串的結束 2 表匹配次數的符號。重複零次或更多次 它代...

C 正規表示式(備忘錄)

基本元字元 匹配任意單個字元 邏輯或操作 匹配字符集中的乙個字元 對字符集求非 定義乙個區間 對下乙個字元轉義 數量元字元 匹配前乙個字元 子表示式 的零次或多次重複 的懶惰型版本 匹配前乙個字元 子表示式 的一次或多次重複 的懶惰型版本 配前乙個字元 子表示式 的零次或多次重複 匹配前乙個字元 子...

C 正規表示式(備忘錄)

基本元字元 匹配任意單個字元 邏輯或操作 匹配字符集中的乙個字元 對字符集求非 定義乙個區間 對下乙個字元轉義 數量元字元 匹配前乙個字元 子表示式 的零次或多次重複 的懶惰型版本 匹配前乙個字元 子表示式 的一次或多次重複 的懶惰型版本 配前乙個字元 子表示式 的零次或多次重複 匹配前乙個字元 子...