正則匹配 re

2021-09-25 16:34:17 字數 2890 閱讀 1460

^匹配一行字串的開頭

.匹配任意字元,除了換行符

[...]匹配括號中的任乙個,[amk] 匹配 'a','m'或'k'

[^...]不在中的字元:[^abc] 匹配除了a,b,c之外的字元

*匹配0個或多個的表示式

+匹配1個或多個的表示式

?匹配0個或1個由前面的正規表示式定義的片段,非貪婪方式

[ \f\r\t\n] //匹配所有的白字元
[^a-z] //除了小寫字母以外的所有字元
[0-9\.\-] //匹配所有的數字,句號和減號
[[:alpha:]]

任何字母

[[:digit:]]

任何數字

[[:alnum:]]

任何字母和數字

[[:space:]]

任何空白字元

[[:upper:]]

任何大寫字母

[[:lower:]]

任何小寫字母

[[:punct:]]

任何標點符號

[[:xdigit:]]

任何16進製制的數字,相當於[0-9a-fa-f]

|a| b,匹配a或b

精確匹配 n 個前面表示式。例如, o 不能匹配 "bob" 中的 "o",但是能匹配 "food" 中的兩個 o。

匹配 n 個前面表示式。例如, o 不能匹配"bob"中的"o",但能匹配 "foooood"中的所有 o。"o" 等價於 "o+"。"o" 則等價於 "o*"。

匹配 n 到 m 次由前面的正規表示式定義的片段,貪婪方式

\w匹配字母數字下劃線

\w匹配非字母數字下劃線

\s匹配任意空白字元

\s匹配任意非空白字元

\d匹配任意數字,等價於 [0-9]

\d匹配任意非數字

首先分享一道例題:

bugku-----字元?正則

劃線部分是重點哦,

preg_match("/key.*key.key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_get["id"]), $match);

這句話不太難,我們可以乙個乙個比較的得到flag。因為通過得到的php**來看,這個id就是flag。。。。

'/key' 就是key 的意思,'.*'即匹配任意乙個字元,『key』還是key,『.'就是需要任意字元但是字元的個數要比4大同時比7小,'key』仍然是key,『:'本意不改,還是冒號,'\/'是反斜槓的意思即『/』,  '.\/'還是乙個任意字元都ok再加上乙個反斜槓/,'(.*key)』還是key,[a-z]是從a到z之間任意乙個小寫字母,[:punct:]是任何標點符號。

下面記錄一些re庫

re.match :嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match() 就返回none。

re.search:掃瞄整個字串並返回第乙個成功的匹配。

在前面兩個表示式中有區別,但是得到的答案的代表相同,,,

span():獲取開始和結束位置;string:獲取匹配的內容

group():獲取子表示式匹配的內容

re.findall:在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

re.sub(『表示式』, 『新字元』, 『字串』):用於替換字串中的匹配項。

re.split:方法按照能夠匹配的子串將字串分割後返回列表,用於通過匹配的子串將字串分割,並將分割後的子串以列表形式返回,通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num+1 個子字串 ,除去字串中符表示式的字元,以列表的形式返回

re.compile:函式用於編譯正規表示式,生成乙個正規表示式物件

首先執行match後

\d是數字,所以對於匹配的字串,沒有結果,返回是none,

string: 待匹配字串,比較模糊的乙個匹配。。

findall的例子:

re 正則匹配的非貪婪匹配

非貪婪匹配 將盡可能少的匹配內容,當?出現在其他的重複次數後面時會將貪婪模式改為非貪婪模式。如 abc.abc.非貪婪匹配 盡可能少的匹配?號表示 號前面的字元出現0 無數個 號表示最少匹配 號表示 號前面的字元出現1 無數個 表示0 1個 print re.findall r ab aababba...

re正則匹配 必會的80 操作

1 re.match 從頭開始匹配,第乙個字元就要符合規則import re res re.match r a z d qas13223455432 qas 2 re.search 匹配包含import re res re.search r d qas13223455432 13223455432 ...

python 字串匹配 正則 re

1.re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。import re content 123i love 123 you pattern r 123 res re.match pattern,content print res prin...