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)
結果:spa
2.經常使用字符3d
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)
結果:code
匹配身份證信息:blog
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())
結果:ci