python之正则表达式

  1 #正则表达式 - re  #re模块
  2 import re
  3 # . 通配符,除换行符(\n)之外的符号 , .代表一个元素
  4 # str1 = 'songqin'
  5 # #re.findall()   ,必填参数2个,第一个正则表达式,第二个是需求处理的字符串,还有一个缺省值
  6 # res = re.findall('s.',str1) #findall,查找所有符合要求的内容,不止一个,用list存储,返回值是列表
  7 # print(res)
  8 
  9 # * ,*前面的元素可以出现0次或多次
 10 str1 = 'songqin'
 11 res = re.findall('s.*',str1)
 12 print(res)
 13 
 14 str1 = 'songqinsoo'
 15 res1 = re.findall('so*',str1)
 16 print(res1)  #['so', 's']  这个s后面的o可以出现0次或者多次
 17 
 18 # +,+前面的元素至少出现一次或者多次
 19 str1 = 'songqin'
 20 res2 = re.findall('s.*',str1)
 21 print(res2)
 22 
 23 # ? ,组合用法:(.*?)  (.+?)
 24 #a123456b  a(.*?)b  取出来的是123456 ,左右夹击
 25 
 26 #\w 匹配字母数字下划线
 27 str1 = 'songqin'
 28 res3 = re.findall('\w',str1)
 29 print(res3)
 30 
 31 str2 = 'songqin'
 32 res3 = re.findall('\w{3}',str2) #['son', 'gqi'] 表示要3个连续的字母数字下划线组合
 33 print(res3)
 34 
 35 #\W 匹配非字母数字下划线
 36 str3 = 'songqin1231='
 37 res4 = re.findall('\W',str3)
 38 print(res4)
 39 
 40 str3 = 'songqin1231='
 41 res4 = re.findall('\W{3}',str3)#表示要3个连续的非字母数字下划线组合
 42 print(res4)
 43 #\S 匹配任意非空字符
 44 
 45 str11 = 'songq  '
 46 res4 = re.findall('\S',str11)#表示要3个连续的非字母数字下划线组合
 47 print(res4)
 48 #\d 匹配任意数字,等价于[0-9]
 49 
 50 str5 = 'songqin123aaa1=a'
 51 res5 = re.findall('\d.+\d',str5) #把中间数字一起取出
 52 print(res5)
 53 
 54 str5 = 'songqin123a456aaaa'
 55 res8 = re.findall('\d+\d',str5) #把中间数字一起取出
 56 #两种方式输出结果
 57 print(res8)
 58 print(''.join(res8))
 59 
 60 #\D 匹配任意非数字
 61 str6 = '123aaasongqina331'
 62 res6 = re.findall('\D.+\D',str6) #把中间数字一起取出
 63 print(res6)
 64 
 65 
 66 #^  匹配字符串的开头
 67 
 68 
 69 #$ 匹配字符串的末尾
 70 
 71 
 72 
 73 
 74 
 75 #正则提取邮箱邮箱
 76 import re
 77 pattern = re.compile('\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}')
 78 str = u'1135384311@qq.com'
 79 print(pattern.search(str))
 80 #身份证号
 81 import re
 82 pattern = re.compile('\d{17}[\d|x]|\d{15}')
 83 str = u'362204199410288416'
 84 print(pattern.search(str))
 85 #手机号
 86 import re
 87 pattern = re.compile('^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$')
 88 str31 = u'18702629780'
 89 print(pattern.search(str31))
 90 
 91 #re模块常见方法
 92 # re.compile(pattern[,flags])
 93 #用于编译正则表达式,生成一个正则表达式(pattern)对象,供match()和search()这两个函数调用
 94 
 95 # 正则表达式re.findall()与re.finditer()的区别
 96 #re.findall()如果可以匹配返回的是一个列表,re.finditer()返回的是一个迭代器,需要对其进行遍历,才能获取数据。
 97 
 98 #re.split 能够匹配的子串将字符串切割后返回列表
 99 
100 # re模块修饰符
101 re.I #使匹配对大小写不敏感
102 re.S #使.匹配包括换行符在内的所有字符
103 
104 str1 = 'songqinSo\n'
105 res2 = re.findall('so*',str1,re.I | re.S)  #re.I #使匹配对大小写不敏感
106 print(res2)

 

posted @ 2021-02-19 22:13  小boboa  阅读(108)  评论(0编辑  收藏  举报