regex主要規則與學習筆記

2021-10-24 03:01:44 字數 3988 閱讀 4921

# 正規表示式

# /blob/master/translations/readme-cn.md

元字元

. 句號匹配任意單個字元除了換行符。

字元種類。匹配方括號內的任意字元。[^

] 否定的字元種類。匹配除了方括號裡的任意字元

* 匹配》=

0個重複的在*號之前的字元。

+ 匹配》=

1個重複的+號前的字元。

? 標記?之前的字元為可選.

匹配num個大括號之前的字元或字符集 (n <= num <= m)

.(xyz) 字符集,匹配與 xyz 完全相等的字串.

| 或運算子,匹配符號前或後的字元.

\ 轉義字元,用於匹配一些保留的字元 (

).*+

?^ $ \ |

^ 從開始行開始匹配.

$ 從末端開始匹配.

點運算子 .

.ar匹配乙個任意字元後面跟著是a和r的字串。

字符集方括號用來指定乙個字符集。 在方括號中使用連字元來指定字符集的範圍。

[tt]he 匹配 the 和 the

方括號的句號就表示句號。

表示式 ar[

.] 匹配 ar.字串

否定字符集

表示式[

^c]ar 匹配乙個後面跟著ar的除了c的任意字元。

* 號*號匹配 在*之前的字元出現大於等於0次。

表示式 a* 匹配0或更多個以a開頭的字元

表示式[a-z]

* 匹配乙個行中所有以小寫字母開頭的字串。

*字元和.字元搭配可以匹配所有的字元.

**和表示匹配空格的符號\s連起來用

表示式\s*cat\s*匹配0或更多個空格開頭和0或更多個空格結尾的cat字串。

+ 號+號匹配+號之前的字元出現 >=

1 次 表示式c.

+t 匹配以首字母c開頭以t結尾,中間跟著至少乙個字元的字串。

? 號? 標記在符號前面的字元為可選,即出現 0 或 1 次。

表示式 [t]

?he 匹配字串 he 和 the

號 是乙個量詞,常用來限定乙個或一組字元可以重複出現的次數

表示式 [0-

9]匹配最少 2 位最多 3 位 0

~9 的數字。

省略第二個引數

[0-9]

匹配至少兩位 0

~9 的數字。

如果逗號也省略掉則表示重複固定的次數

[0-9]

匹配3位數字(.

..) 特徵標群(.

..) 中包含的內容將會被看成乙個整體,和數學中小括號( )的作用相同

表示式 (ab)

* 匹配連續出現 0 或更多個 ab。

如果沒有使用 (..

.) ,那麼表示式 ab* 將匹配連續出現 0 或更多個 b 。

如果在 前加上特徵標群 (..

.) 則表示整個標群內的字元重複 n 次。

還可以在 (

) 中用或字元 | 表示或。

(c|g|p)ar 匹配 car 或 gar 或 par.

| 或運算子

或運算子就表示或,用作判斷條件

(t|t)he|car 匹配 (t|t)he 或 car

轉碼特殊字元

反斜線 \ 在表示式中用於轉碼緊跟其後的字元。用於指定

/ \ +

*. $ ^

|? 這些特殊字元

如果想要匹配這些特殊字元則要在其前面加上反斜線 \

如果想要匹配句子中的 . 則要寫成 \.

^ 號^ 用來檢查匹配的字串是否在所匹配字串的開頭

^(t|t)he 匹配以 the 或 the 開頭的字串。

$ 號$ 號用來匹配字元是否是最後乙個

(at\.

)$ 匹配以 at. 結尾的字串。

簡寫字符集

簡寫 描述

. 除換行符外的所有字元

\w 匹配所有字母數字,等同於 [a-za-z0-

9_]\w 匹配所有非字母數字,即符號,等同於: [

^\w]

\d 匹配數字: [0-

9]\d 匹配非數字: [

^\d]

\s 匹配所有空格字元,等同於: [\t\n\f\r\p

]\s 匹配所有非空格字元: [

^\s]

\f 匹配乙個換頁符

\n 匹配乙個換行符

\r 匹配乙個回車符

\t 匹配乙個製表符

\v 匹配乙個垂直製表符

\p 匹配 cr/lf(等同於 \r\n),用來匹配 dos 行終止符

零寬度斷言(前後預查)

先行斷言和後發斷言都屬於非捕獲簇(不捕獲文字 ,也不針對組合計進行計數)。 先行斷言用於判斷所匹配的格式是否在另乙個確定的格式之前,匹配結果不包含該確定格式(僅作為約束)。

符號 描述

?= 正先行斷言-存在

?! 負先行斷言-排除

?<= 正後發斷言-存在

?<

! 負後發斷言-排除?=

... 正先行斷言?=

... 正先行斷言,表示第一部分表示式之後必須跟著 ?=.

..定義的表示式。

返回結果只包含滿足匹配條件的第一部分表示式。 定義乙個正先行斷言要使用 (

)。在括號內部使用乙個問號和等號: (?=

...)。

表示式 (t|t)he(

?=\sfat) 匹配 the 和 the,在括號中我們又定義了正先行斷言 (

?=\sfat) ,即 the 和 the 後面緊跟著 (空格)fat。?!

... 負先行斷言

負先行斷言 ?

! 用於篩選所有匹配結果,篩選條件為 其後不跟隨著斷言中定義的格式。 正先行斷言 定義和 負先行斷言 一樣,區別就是 = 替換成 ! 也就是 (?!

...)。

表示式 (t|t)he(

?!\sfat) 匹配 the 和 the,且其後不跟著 (空格)fat。

?<=..

. 正後發斷言

正後發斷言 記作(

?<=..

.) 用於篩選所有匹配結果,篩選條件為 其前跟隨著斷言中定義的格式。

表示式 (

?<=

(t|t)he\s)

(fat|mat) 匹配 fat 和 mat,且其前跟著 the 或 the。

?.. 負後發斷言

負後發斷言 記作 (

?..) 用於篩選所有匹配結果,篩選條件為 其前不跟隨著斷言中定義的格式。

表示式 (

?<

!(t|t)he\s)

(cat) 匹配 cat,且其前不跟著 the 或 the。

標誌標誌也叫模式修正符,因為它可以用來修改表示式的搜尋結果。

標誌 描述

i 忽略大小寫。

g 全域性搜尋。

m 多行修飾符:錨點元字元 ^ $ 工作範圍在每行的起始。

忽略大小寫

表示式 /the/gi 表示在全域性搜尋 the,在後面的 i 將其條件修改為忽略大小寫,則變成搜尋 the 和 the,g 表示全域性搜尋。

全域性搜尋

表示式 /

.(at)

/g 表示搜尋 任意字元(除了換行)+ at,並返回全部結果。

多行修飾符

多行修飾符 m 常用於執行乙個多行匹配

表示式 /at(

.)?$/gm 表示小寫字元 a 後跟小寫字元 t ,末尾可選除換行符外任意字元。根據 m 修飾符,現在表示式匹配每行的結尾。

貪婪匹配與惰性匹配

正規表示式預設採用貪婪匹配模式,在該模式下意味著會匹配盡可能長的子串。我們可以使用 ? 將貪婪匹配模式轉化為惰性匹配模式。

makefile學習筆記 書寫規則 規則舉例

20180413 makefile學習筆記 書寫規則 規則舉例 規則包含兩個部分,乙個是依賴關係,乙個是生成目標的方法。在makefile中,規則的順序是很重要的,因為,makefile中只應該有乙個最終目標,其他的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終目標是什麼。一般來說...

FPGA verilog學習筆記(二)命名規則

學習 zynq soc 修煉秘籍 記錄筆記 1 頂層檔案 物件 功能 top 例 video oneline top 2 邏輯控制檔案 介於頂層和驅動層檔案之間 物件 ctr 例 ddr ctr.v 3 驅動程式命名 物件 功能 dri 例 led dri.v uart rxd dri.v 4 引數...

python學習筆記 python基礎規則

python 識別符號 在 python 裡,識別符號由字母 數字 下劃線組成。在 python 中,所有識別符號可以包括英文 數字以及下劃線 但不能以數字開頭。python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過...