re模組 正規表示式 疏理

2022-08-19 15:06:10 字數 2836 閱讀 2734

在網上總是很難找到令自己比較滿意的,關於正規表示式的文章。所以決定自己來總結一波,並配上相應的示例。

正規表示式:定義了規則,用來字串處理。

用途:1、匹配 - 符合規則的字串,則認為匹配了。

2、提取 - 提取出符合規則的字串。

python中通過re模組來處理正規表示式。re模組的常用方法如下:

re.match(re規則,字串):從頭開始匹配。從字串的第乙個字元開始匹配,如果第乙個字元不匹配規則,那麼匹配失敗。

re.search(re規則,字串):匹配包含。不要求從字串的第乙個字元就匹配。只要字串當中有匹配該規則的,則就匹配成功。

re.findall(re規則,字串):把所有匹配的字元放在列表中並返回。

re.sub(re規則,替換串,被替換串):匹配字元並替換。

正規表示式常用的規則如下:

下面一一示例來說明:

'.': 是只匹配乙個字元(除了\n)

如字串a="hello123world!!" , 那麼'.'匹配到的結果為:"h" .從字串a中搜尋,搜尋什麼呢,符合規則'.'的資料。

1 >>> import re   #匯入正則模組

2 >>> re.search('.','hello123world!!') #使用search方法

3 <_sre.sre_match object span="(0," match="h"> #匹配成功,返回了乙個匹配物件。匹配的結果為:h match=表示匹配到的結果

'^': 匹配字串的開頭。指定字串必須以什麼開頭,如果不一樣,則匹配失敗。

如字串a="hello123world!!" , 那麼'^h'匹配到的結果為:"h" .如果是'^f'則匹配失敗

1 >>> re.search('^h','hello123world!!')

2 <_sre.sre_match object span="(0," match="h"> #匹配以h開頭的字串,匹配成功,匹配結果為:h

3 >>> re.search('^f','hello123world!!')

4 >>>                      #匹配失敗,為none

re.match方法也是從字串開頭匹配。所以與^效果一樣:

1 1 >>> re.match('h','hello123world!!')

2 2 <_sre.sre_match object span="(0," match="h"> #匹配以h開頭的字串,匹配成功,匹配結果為:h

3 3 >>> re.match('f','hello123world!!')

4 4 >>> #匹配失敗,沒有輸出

'$':指定字串以$前的字元結尾 。

1 >>> re.search('!$','hello123world!!')

2 <_sre.sre_match object span="(14," match="!"> #匹配以!結尾的字串,匹配成功,匹配結果為:!

4 >>> re.search('d$','hello123world!!')

5 >>> #匹配以d結尾的字串,失敗

'*':表示匹配前面的字元0次 或者 多次'+':表示匹配前面的字元1次 或者 多次以上的所有匹配都只是匹配到了乙個字元。那這兩個匹配符則可以匹配多次。

1 >>> re.search('lll*','hello123world!!')

2 <_sre.sre_match object span="(2," match="ll"> #*可以匹配到至於2個l

3 4 >>> re.search('lll+','hello123world!!')

5 >>> # +至少要匹配三個l 所以匹配失敗

如果我想要指定匹配次數呢? -----

' ':指定匹配前面字元的次數。

1 >>> re.search('el','hello123world!!')

2 <_sre.sre_match object span="(1," match="ell"> #匹配l兩次

3 >>>

4 >>> re.search('el','hello123world!!') #匹配l三次 ,匹配失敗

5 >>>

6 >>> re.search('el','hello123world!!')

7 <_sre.sre_match object span="(1," match="el"> #匹配l一次

如果只考慮匹配 0次 或者 1次呢 ---

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

1 >>> re.search('el?','hello123world!!')

2 <_sre.sre_match object span="(1," match="el"> #?匹配l 0次或者 1次

3 >>>

4 >>> re.search('ello7?','hello123world!!')

5 <_sre.sre_match object span="(1," match="ello"> #? 匹配7 0次或者1次

re 正規表示式模組

import re 預定義字符集 d 數字 0 9 d 非數字 d s 空白字元 空格 t r n f v s 非空白字元 s w 單詞字元 a za z0 9 w 非單詞字元 w 匹配數量 匹配除換行符以外的任何單個字元 匹配前乙個字元0或無限次 盡可能多的匹配 盡可能少的進行匹配前邊的正規表示式...

正規表示式 re模組

re是python中的正規表示式模組,正則也是每個人程式設計之路上必備的基礎技能。這部落格希望即便從來沒接觸過的人看了也會使用正規表示式字元 含義.匹配除了換行符外的任何字元。可以用re.dotall來設定匹配任何字元,包括換行符 丨a丨b 表示正規表示式匹配a或者b 匹配輸入字串開始的位置,如果設...

正規表示式re模組

正規表示式re模組 編譯正規表示式模式,返回乙個物件的模式。可以把那些常用的正規表示式編譯成正規表示式物件,這樣可以提高一點效率。1 compile 格式 re.compile pattern,flags 0 pattern 編譯時用的表示式字串。flags 編譯標誌位,用於修改正規表示式的匹配方式...