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 #'.' 默认匹配除换行 之外的任意字符,若指定flag DOTALL,则匹配任意字符 2 res=re.match('^.+','chen123er567') 3 print(res.group()) 4 5 #匹配包括换行 之外的任意字符 6 res=re.search('.+','1231 aHG hvVrsd',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 #'' 匹配以''号前字符结尾 46 res=re.search('A[0-9]+[a-z]','1231a')# 47 print(res) 48 49 #‘d’ 匹配数字 50 #‘D’ 匹配非数字的所有字符 51 res=re.search('d+','1231aasd')# 52 print(res) 53 res=re.search('D+','1231s|aassd')# 54 print(res) 55 56 #‘w’ 匹配[A-Za-z0-9] 57 #‘W’ 匹配非[A-Za-z0-9]的所有字符 58 res=re.search('w+','1231||asd')# 59 print(res) 60 res=re.search('W+','1231||asd')# 61 print(res) 62 63 #‘s’ 匹配空白字符、 、 、 64 res=re.search('s+','12 31||a sd')# 65 print(res) 66 67 #(?P<name>...) 分组匹配 68 res=re.search('(?P<id>[0-9]+)','1231taosd') 69 print(res) 70 print(res.groupdict())#将匹配结果字典输出 71 res=re.search('(?P<id>[0-9]+)(?P<name>[a-z]+)','1231taosd')#一起匹配 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())
结果: