正規表示式學習 複習 筆記

2021-09-26 19:47:08 字數 2358 閱讀 3270

近期在做文件處理的時候發現正規表示式忘記了很多,故在網上找了一些blog學習,在這強烈推薦朱哥寫的blog:以下是對朱哥blog學習的筆記。

什麼是正規表示式?

正規表示式的概念:正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。

通俗來說,如《圖1>在notepad++中你想找到hello,很簡單"ctrl+f",可以找到3個,我們現在只需要找到開頭是hello的,此時我們只需要按照《圖2>查詢就可以,查詢內容是:^hello,^hello就是乙個正規表示式。

正則就是按照我們自己的想法查詢對應規則的字串。

一、錨定和單詞邊界

^:表示錨定行首,此字元後面的任意內容必須出現在行首,才能匹配。

$:表示錨定行尾,此字元前面的任意內容必須出現在行尾,才能匹配。

^$:表示匹配空行,這裡所描述的空行表示"回車",而"空格"和"tab"等都不能算作此處所描述的空行。

^abc$:表示abc獨佔一行時,會被匹配到。

\《或者\b:匹配單詞邊界,表示錨定詞首,其後面的字元必須作為單詞首部出現。

\>或者\b:匹配單詞邊界,表示錨定詞尾,其前面的字元必須作為單詞尾部出現。

\b:匹配非單詞邊界,正好與\b相反。

#注意:

正則中單詞:0-9a-za-z

二、連續次數的匹配

*表示前面的字元連續出現任意次,包括0次。

.表示任意單個字元。

.*表示任意長度的任意字元,與萬用字元中的*的意思相同。

\?表示匹配前面的字元0或1次。

\+表示匹配前面的字元至少1次,或連續多次,連續次數上不封頂。

\表示前面的字元出現n次,將會被匹配到。

\表示前面的字元連續出現至少x次,至多y次,將會被匹配到。

\表示前面的字元至少出現0次,至多出現n次,將會被匹配到。

\\表示前面的字元至少出現n次,將會被匹配到。

三、常用符號

表示匹配指定範圍內的任意單個字元

[^]表示匹配指定範圍外的任意單個字元

[[:alpha:]]表示任意大小寫字母

[[:lower:]]表示任意小寫字母

[[:upper:]]表示任意大寫字母

[[:digit:]]表示0到9之間的任意單個數字(包括0和9)

[[:alnum:]]表示任意數字或字母

[[:space:]]表示任意空白字元,包括"空格","tab鍵"等

[[:punct:]]表示任意標點符號

[0-9]與[[:digit:]]等效

[a-z]與[[:lower:]]等效

[a-z]與[[:upper:]]等效

[a-za-z]與[[:alpha:]]等效

[a-za-z0-9]與[[:alnum:]]等效

[^0-9]與[^[:digit:]]等效

[^a-z]與[^[:lower:]]等效

[^a-z]與[^[:upper:]]等效

[^a-za-z]與[^[:alpha:]]等效

[^a-za-z0-9]與[^[:alnum:]]等效

#簡短格式並非所有正規表示式解析器都可以識別

\d表示任意單個0-9的數字

\d表示任意單個非數字的字元

\t表示匹配單個橫向製表符(相當於乙個tab鍵)

\s表示匹配單個空白字元,包括"空格","tab製表符"等

\s表示匹配單個非空白字元

四、分組與後向引用

\(\)表示分組,我們可以將其中的內容當做乙個整體,分組可以巢狀。

\(ab\)表示將ab當做乙個整體去處理。

\1表示引用整個表示式中第1個分組中的正則匹配到的結果。

\2表示引用整個表示式中第2個分組中的正則匹配到的結果。

五、轉義符

"\"與正則中的符號結合在一起時,就表示這個符號本身的含義。

六、拓展正規表示式

grep命令使用了"-e"選項,表示greo命令會把"正則達表示"中的符號當成"拓展正規表示式"去理解,而不再使用預設的"基本正規表示式"。

()表示分組

?表示匹配前面的字元0或1次

+表示匹配前面的字元至少1次

表示匹配前面的字元n次

表示匹配前面的字元至少x次,至多y次

表示匹配前面的字元至少0次,至多n次

表示匹配前面的字元至少n次

|只在拓展正規表示式**現,表示或

正規表示式複習

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

正規表示式複習

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

正規表示式複習

為了下列場景中的需求,可以使用正規表示式非常簡單的完成,這就是使用正規表示式的目的 在乙個檔案中,查詢出itcast開頭的語句 在乙個檔案中,找到含有itcast的語句 在乙個檔案中,找到郵箱為163或者126的所有郵件位址 通常正規表示式對字串匹配的時候,可以使用re模組 import re 使用...