1.常用语法

 1 #正则表达式是用来匹配字符串的
 2 
 3 import re
 4 
 5 #匹配,从字符串头开始搜索
 6 res=re.match('[a-z]+','asda213kj21jk3b12jb12')#从字符串头开始搜索
 7 print(res.group())
 8 
 9 #匹配,无前后关系
10 res=re.search('[0-9]+','asda213kj21jk3b12jb12')#
11 print(res.group())
12 
13 #分割
14 res=re.split('[0-9]+','asda213kj21jk3b12jb12')
15 print(res)
16 
17 #替换,匹配之后替换
18 res=re.sub('[0-9]+','|','asda213kj21jk3b12jb12',count=2)#替换两次
19 print(res)

结果:

2.常用字符

 1 #'.' 默认匹配除换行\n之外的任意字符,若指定flag DOTALL,则匹配任意字符
 2 res=re.match('^.+','chen123er567')
 3 print(res.group())
 4 
 5 #匹配包括换行\n之外的任意字符
 6 res=re.search('.+','1231\naHG\nhvVrsd',flags=re.S)
 7 print(res.group())
 8 
 9 #'$' 结尾
10 
11 #'+' 匹配'+'号前一个字符一次或多次
12 res=re.search('#.+#','121#asdasd#')
13 print(res)
14 
15 res=re.search('r[a-z]+a','chenronghuaronghua123ronghua567')
16 print(res)
17 
18 #‘?’ 匹配'?'号前一个字符一次或0次
19 res=re.search('t?','taojames')
20 print(res)
21 res=re.search('t?','ttaojames')
22 print(res)
23 res=re.search('tt?','ttaojames')#整体匹配,匹配t或tt
24 print(res)
25 
26 #{m} 匹配'{m}'号前m次
27 res=re.search('[0-9]{3}','tao123ja23m123es')
28 print(res)
29 res=re.findall('[0-9]{1,3}','tao123ja23m123es')#找出所有符合的匹配,以数列方式返回,没有group方法
30 print(res)
31 
32 #‘|’ 匹配‘|’号两端,或
33 res=re.search('tao|Tao','tao123ja23m123es')
34 print(res)
35 
36 #‘(...)’ 分组匹配
37 res=re.search('tao{2}','taooo123ja23m123es')
38 print(res)
39 res=re.search('(tao){2}','taotao123ja23m123es')#把tao分成一组
40 print(res)
41 res=re.search('(tao){2}(\|\|\=){3}','taotao||=||=||=123ja23m123es')
42 print(res)
43 
44 #'\A' 匹配以'\A'号后字符开头
45 #'\Z' 匹配以'\Z'号前字符结尾
46 res=re.search('\A[0-9]+[a-z]\Z','1231a')#
47 print(res)
48 
49 #‘\d’ 匹配数字
50 #‘\D’ 匹配非数字的所有字符
51 res=re.search('\d+','1231aasd')#
52 print(res)
53 res=re.search('\D+','1231\s|aassd')#
54 print(res)
55 
56 #‘\w’ 匹配[A-Za-z0-9]
57 #‘\W’ 匹配非[A-Za-z0-9]的所有字符
58 res=re.search('\w+','1231||a\sd')#
59 print(res)
60 res=re.search('\W+','1231||a\sd')#
61 print(res)
62 
63 #‘\s’ 匹配空白字符、\t、\n、\r
64 res=re.search('\s+','12 31||a\rsd')#
65 print(res)
66 
67 #(?P<name>...) 分组匹配
68 res=re.search('(?P<id>[0-9]+)','1231tao\sd')
69 print(res)
70 print(res.groupdict())#将匹配结果字典输出
71 res=re.search('(?P<id>[0-9]+)(?P<name>[a-z]+)','1231tao\sd')#一起匹配
72 print(res)
73 print(res.groupdict())
74 
75 #匹配反斜杠
76 res=re.search(r'\\','12 31||a\\rsd')
77 print(res)
78 
79 #匹配忽略大小写
80 res=re.search('[a-z]+','1231aHGhvVrsd',flags=re.I)
81 print(res)

结果:

匹配身份证信息:

1 #将身份证号分组
2 
3 res=re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<county>[0-9]{2})(?P<birth>[0-9]{8})(?P<id>[0-9]{4})','211421199912221234')#一起匹配,
4 
5 print(res.groupdict())

结果:

posted on 2018-11-08 21:34  研究僧桃子  阅读(122)  评论(0编辑  收藏  举报