正則 re.compile 函數


re.compile 函數

compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

語法:

re.compile(pattern[, flags])

參數:

  • pattern : 一個字符串形式的正則表達式

  • flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數為:

    1. re.I 忽略大小寫
    2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴於當前環境
    3. re.M 多行模式
    4. re.S 即為 . 並且包括換行符在內的任意字符(. 不包括換行符)
    5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字符屬性數據庫
    6. re.X 為了增加可讀性,忽略空格和 # 后面的注釋
 1 # coding=utf-8
 2 import re
 3 import logging
 4 
 5 s = 'A1B2C55'
 6 # 用於匹配最少一位數字
 7 pattern = re.compile(r'\d+')
 8 # match 從頭開始匹配
 9 w = pattern.match(s)
10 logging.warning(w)
11 
12 # 從 B 開始匹配
13 w = pattern.match(s, 2, 10)
14 logging.warning(w)
15 
16 # 從 2 開始匹配
17 w = pattern.match(s, 3, 10)
18 logging.warning(w)
19 
20 logging.warning(w.group())
21 logging.warning(w.start())
22 logging.warning(w.end())
23 logging.warning(w.span())
案例

輸出結果:

WARNING:root:None
WARNING:root:None
WARNING:root:<_sre.SRE_Match object at 0x7fd93b5dab90>
WARNING:root:2
WARNING:root:3
WARNING:root:4
WARNING:root:(3, 4)

  

在上面,當匹配成功時返回一個 Match 對象,其中:

  • group([group1, …]) 方法用於獲得一個或多個分組匹配的字符串,當要獲得整個匹配的子串時,可直接使用 group() 或 group(0)
  • start([group]) 方法用於獲取分組匹配的子串在整個字符串中的起始位置(子串第一個字符的索引),參數默認值為 0;
  • end([group]) 方法用於獲取分組匹配的子串在整個字符串中的結束位置(子串最后一個字符的索引+1),參數默認值為 0;
  • span([group]) 方法返回 (start(group), end(group))
 1 # coding=utf-8
 2 import re
 3 import logging
 4 
 5 s = 'Hello Python Hello World'
 6 pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)
 7 # match 從頭開始匹配
 8 w = pattern.match(s)
 9 # 打印結果
10 logging.warning(w)
11 # 返回成功的字符串
12 logging.warning(w.group())
13 # 返回第一個分組匹配到的子串
14 logging.warning(w.group(1))
15 # 返回第二個分組匹配到的子串
16 logging.warning(w.group(2))
17 # 返回第一個分組匹配到的子串索引
18 logging.warning(w.span(1))
19 # 返回第二個分組匹配到的子串索引
20 logging.warning(w.span(2))
21 # 等價於 (w.group(1), w.group(2), ...)
22 logging.warning(w.groups())
23 # 不存在第三個 會報錯
24 logging.warning(w.group(3))
案例

輸出結果:

WARNING:root:<_sre.SRE_Match object at 0x7f62f0583cf0>
WARNING:root:Hello Python
WARNING:root:Hello
WARNING:root:Python
WARNING:root:(0, 5)
WARNING:root:(6, 12)
WARNING:root:('Hello', 'Python')
Traceback (most recent call last):
  File "test_word.py", line 17, in <module>
    logging.warning(w.group(3))
IndexError: no such group

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM