1 1.指定 eval()调用一个代码对象会提高性能
2 2.在进行模式匹配之前,正则表达式的模式必须编译为正则表达式对象
3 匹配时需要进行多次匹配,进行预编译可以提升速度
4 re.compile(pattern,flags = 0)
5 3.消除缓存
6 re.purge()
7 4.使用 re.S 后 . 可以匹配换行符 \n
8 5.使用了match() 和 search() 方法之后返回的对象称为匹配对象
9 匹配对象常用 group() 和 groups() 方法
10 group() 返回整个匹配对象 或 特定子组
11 groups() 返回一个包含唯一 或 全部子组的元组
12 6.match() 方法 对字符串的起始部分进行模式匹配
13 成功:返回一个匹配对象
14 失败:返回 None
15 7.search() 方法 对字符串任意位置进行模式匹配
16 成功:返回匹配对象
17 失败:返回 None
18 8.可以使用 pos , endpos 参数指定目标字符串的搜索范围
19 9.使用 . 匹配任何单个字符
20 .end 不能匹配 end
21 不能匹配 \n 换行符
22 使用 \. 匹配 .
23 10.创建字符集 [ ]
24 [cr][23] 表示 匹配第一个字符 c 或者 r
25 第二个字符 2 或者 3
26
27
28 程序:
29 import re
30 # match(pattern,string,flags = 0) 匹配示例
31 m = re.match(‘foo‘,‘foo‘)
32 if m is not None:
33 # 如果匹配成功则输出匹配内容
34 print(m.group())
35 # print(m.groups()) 返回空元组 因为没有子组
36 # foo
37 # 匹配对象具有 group() 和 groups() 方法
38 print(m)
39 # <re.Match object; span=(0, 3), match=‘foo‘>
40
41 # search(pattern,string,flags = 0) 匹配示例
42 m = re.search(‘foo‘,‘sea food‘)
43 if m is not None:
44 print(m.group())
45 # foo
46 print(m)
47 # <re.Match object; span=(4, 7), match=‘foo‘>
48 # 返回第四个元素的位置
49
50 # | 或 示例
51 bt = ‘bat|bet‘
52 m = re.match(bt,‘bat‘)
53 # match 只匹配开头
54 m2 = re.search(bt,‘abat‘)
55 # search 从开始到结尾
56 print(m.group())
57 # bat
58 print(m2.group())
59 # bat
60
61 # . 匹配任意字符示例
62 anyend = ‘.end‘
63 m = re.match(anyend,‘aend‘)
64 print(m.group())
65 # aend
66 m2 = re.search(anyend,‘abcdend‘)
67 print(m2.group())
68 # dend
69
70 pi_pattern = ‘3.14‘
71 m = re.match(pi_pattern,‘3.14‘)
72 print(m.group())
73 # 3.14
74 pi_pattern = ‘3\.14‘
75 # 将 . 转义
76 m = re.match(pi_pattern,‘3.14‘)
77 print(m.group())
78 # 3.14
79
80 # [ ] 创建字符集
81 m = re.match(‘[cr][23][dp][po]‘,‘c3po‘)
82 print(m.group())
83 # c3po
84
85 m = re.match(‘[cr][23][dp][po]‘,‘c2do‘)
86 print(m.group())
87 # c2do
2020-04-11
原文:https://www.cnblogs.com/hany-postq473111315/p/12682011.html