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函数将修饰符对应的数字打印出来。

posted @ 2021-01-13 11:25  xzy186  阅读(877)  评论(0编辑  收藏  举报