python中re模塊下flags修飾符的另類寫法


re模塊中有一些表達式修飾符,包括:

修飾符 描述
re.I 使匹配對大小寫不敏感
re.L 做本地化識別(locale-aware)匹配
re.M 多行匹配,影響 ^ 和 $
re.S 使 . 匹配包括換行在內的所有字符
re.U 根據Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B.
re.X 該標志通過給予你更靈活的格式以便你將正則表達式寫得更易於理解。

發現還可以寫成下面這樣,覺得很好玩,先記錄下來:

代碼:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import re
 5 
 6 
 7 test_line = r'Ab123abcABC456def789ggh'           # 定義一個字符串變量test_line
 8 m = re.compile(r'(a)', re.I)                     # 使用re的compile方法定義一個正則表達式規則
 9 print(m.flags)                                   # 打印re.I標簽的值
10 aa = m.split(test_line)                          # 在split方法中使用compile定義的正則表達式
11 print(aa)                                        # 打印aa變量的值
12 n = re.compile(r'(a)', flags=34)                 # 使用re的compile方法定義一個正則表達式規則,使用標簽flags=34
13 bb = n.split(test_line)                          # 在split方法中使用compile定義的正則表達式
14 print(bb)                                        # 打印bb變量的值
15 cc = n.match(test_line).group()                  # 在match方法中使用compile定義的正則表達式
16 print(cc)                                        # 打印cc變量值
17 dd = re.split(r'(a)', test_line, flags=34)       # 在split方法中使用標簽flags=34
18 print(dd)                                        # 打印dd變量值
19 ee = re.split(r'(a)', test_line, flags=re.I)     # 在split方法中使用標簽re.I
20 print(ee)                                        # 打印ee變量的值

 

打印結果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/Administrator/Desktop/mypython/test.py
34
['', 'A', 'b123', 'a', 'bc', 'A', 'BC456def789ggh']
['', 'A', 'b123', 'a', 'bc', 'A', 'BC456def789ggh']
A
['', 'A', 'b123', 'a', 'bc', 'A', 'BC456def789ggh']
['', 'A', 'b123', 'a', 'bc', 'A', 'BC456def789ggh']

進程已結束,退出代碼0

 

從上面的代碼和執行結果中可以看到,flags=re.I也可以寫成flags=34這樣,只是這樣寫的話代碼不好辨認,所以不推薦這種寫法,至於其他的修飾符應該也可以這樣寫,要先使用flags函數將修飾符對應的數字打印出來。

 

 


免責聲明!

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



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