正規表示式學習筆記

2021-08-01 18:29:22 字數 2400 閱讀 2052

正規表示式是內置於其他語言的或軟體產品裡的「迷你」語言。

基本元字元

元字元說明

.匹配任意單個字元

|邏輯或操作符

匹配字元集合中的乙個字元

[^]對字元集合求非

-定義乙個區間(例如[a-z])

\對下乙個字元進行轉義

[ ]用來定義乙個字元集合

關於-

a-z 表示匹配從a到z的所有大寫字母

a-z 表示匹配從a到z的所有小寫字母

a-f表示匹配從a到f的大寫字母

a-z,匹配從ascii字元a到ascii字元z的所有字元。

在定義乙個字元區間的時候,一定要避免讓這個區間的尾字元小於它的首字元(例如[3-1])。這種區間是沒有意義的。

^是幾個有著多種的元字元之一。只有當它出現在乙個字元集合裡(被放在[ ]之間)並緊跟在左方括號[的後面時,它才發揮「求非」作用。如果是在乙個字元集合的外面並位於乙個模式的開頭,^將匹配字串的開頭。

數量元字元

元字元說明

?匹配前乙個字元(子表示式)的零次或一次重複

*匹配前乙個字元(子表示式)的零次或多次重複

*?*的懶惰版本

+匹配前乙個字元(子表示式)的一次或多次重複

+?+的懶惰版本

匹配前乙個字元(子表示式)的n次重複

匹配前乙個字元(子表示式)至少重複m次且至多n次重複

匹配前乙個字元(子表示式)n次或更多次重複

?的懶惰型版本

懶惰型,懶惰是指匹配盡可能少的字元,與「貪婪型」元字元的行為模式剛好相反。

貪婪型元字元

懶惰型元字元**?

++??元字元說明^

匹配字串的開頭

$匹配字串的結束

\a匹配字串的開頭

\z匹配字串的結束

\<

匹配單詞的開頭

\>

匹配單詞的結束

\b匹配單詞邊界(開頭和結束)

\b\b的反義

特殊字元元字元

元字元說明

[\b]

退格字元

\c匹配乙個控制字元

\d匹配任意乙個數字字元

\d\d的反義

\w匹配任意字母數字字元或下劃線字元

\w\w的反義

\f換頁符

\n換行符

\r回車符

\s匹配乙個空白字元

\s\s的反義

\t製表符(tab字元)

\v垂直製表符

\x匹配乙個十六進製制數字

\0匹配乙個八進位制數字

回溯引用和前後查詢

元字元說明

()定義乙個子表示式

\1匹配第1個子表示式;\2代表第二個子表示式,依次類推

?=向前查詢

?<=

向後查詢

?!負向前查詢

?負向後查詢

?()條件(if then)

?()|

條件(if then else)

()子表示式乙個非常重要的概念,子表示式允許多重巢狀

回溯引用為了解決例如html標籤,找出其中所有的標題文字,標題有

到。

如果我們用

<[hh][1-6]>.*?[hh][1-6]>

就會匹配出:

hello

這並不是我們想要的。

正確的<[hh]([1-6])>.*?[hh]\1>

用\1來引用([1-6])這個子表示式。這樣就使得標籤一一對應了,避免了h2和h3以組合形式匹配的問題。

4. 回溯引用是從1開始計數的(\1,\2等),第0個匹配(\0)可以用來代表整個正規表示式。

5. \1 對應著第1個子表示式,\5 表示第5個子表示式。這種語法存在乙個嚴重的不足:如果子表示式的相對位置發生了變化,整個模式也許就不能再完成原來的工作,刪除或新增子表示式的後果可能更為嚴重。

大小寫轉換

元字元說明

\e結束\l或\u轉換

\l把下乙個支援轉換為小寫

\l把後面的字元轉換為小寫,直到遇見\e為止

\u把乙個字元轉換為大寫

\u把後面的字元轉換為大寫,直到遇見\e為止

匹配模式

元字元說明

(?m)

分行模式

在使用時,(?m)必須出現在整個模式的最前面。

分行匹配模式將使得正規表示式引擎把行分隔符當作乙個字串分隔符來對待。

在分行模式下,^不僅匹配正常的字串開頭,還將匹配行分隔符(換行符)後面的開始位置。

類似的$不僅匹配正常的字串結尾,還將匹配行分隔符(換行符)後面的結束位置。

有許多正規表示式實現不支援(?m)

參考書籍:

《正規表示式必知必會》

正規表示式學習筆記

正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...

正規表示式學習筆記

字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

正規表示式學習筆記

1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...