# 正则表达式是用来干嘛的 # 1,匹配 字符串 # findall() 所有结果都会返回到一个列表里边 # search() 返回匹配到的第一个对象,对象可以调用group()返回结果 # matcj() 只在字符串开始匹配,返回一个对象 import re # s = 'hello world' # print(s.find('ll')) #第一个字符的索引 # set = s.replace('ll','xx') # print(set) # print(s.split(' ')) # string 提供的方法是完全匹配 #引入正则:进行模糊匹配 # print(re.findall('ww{2}l','hello world')) #['worl'] # ret = re.findall('alex','djsaifjasoalexijfasoifjaalex') # print(ret) #['alex', 'alex'] # 正则表达式中的元字符 # . 通配符 # ret = re.findall('w..l','hello world') # print(ret) #['worl'] . 只能代表任意一个字符,除换行符 # ^ # ret = re.findall('^h...o','hafsosfahello') # print(ret) #['hafso'] 只匹配开始符合的 # $ # ret = re.findall('a..x$','afjxjfiewalexfsalex') # print(ret) #['alex'] 只匹配最后四个字符符不符合 # * :重复匹配 匹配0个或多个 # ret = re.findall('a.*li','sdwadsaajijisfsflixli') # print(ret) #['adsaajijisfsflixli'] 贪婪匹配 # + :重复匹配 匹配1个或多个 # ? :匹配0或1次 # ret = re.findall('a?b','aaaabhsdsdabdbsd') # print(ret) #['ab', 'ab', 'b'] # {}: {1,} 表示{1,+oo} # ret = re.findall('a{5}b','asdasdaaaaabdasda') # print(ret) #['aaaaab'] # ret = re.findall('a{1,3}b','asdasdaaaaabdasda') # print(ret) #['aaab'] 先取最多的三次a # [] :字符集 取消元字符的特殊功能(- ^) # ret = re.findall('a[c,d,e]x','aexadxacx') # print(ret) #['aex', 'adx', 'acx'] 匹配次c,d,e任意匹配一个 # ret = re.findall('[a-z]','aex') # print(ret) #['a', 'e', 'x'] # ret = re.findall('[w,*]','a*ex') # print(ret) #['*'] # ^ 放在[]里 取反 # ret = re.findall('[^4,5]','ida5dAa4sd') # print(ret) #['i', 'd', 'a', 'd', 'A', 'a', 's', 'd'] # : 后边跟元字符去除特殊功能 # 后边跟普通字符实现特殊功能 # d 匹配任何十进制数 相当于[0,9] # D 匹配任何非数字字符 相当于[^0-9] # print(re.findall('d{8}','sda1487464654687452')) # ['14874646', '54687452'] # s 匹配任何空白字符 相当于 [ fv] # S 匹配任何非空白字符 相当于[^ fv] # print(re.findall('sasd','fak asd')) #[' asd'] # print(re.findall('Sasd','fakasd')) #['kasd'] # w 任何字母数字字符 相当于 [a-z0-9A-Z] # W 任何非数字字母字符 相当于[^ a-z0-9A-Z] # print(re.findall('w','fak d')) #['f', 'a', 'k', 'd'] # 匹配一个特殊字符边界(除字母数字字符外全算特殊字符) # print(re.findall(r'I','hello,I am a LI$T')) #['I', 'I'] ##################### # 匹配出第一个满足条件的结果 # print(re.search('sb','sadsbassb')) # <_sre.SRE_Match object; span=(3, 5), match='sb'> # ret = re.search('sb','sadsbassb') # print(ret.group()) #sb # ret = re.search('a.','a.gj').group() # a. # print(ret) # a. # print(re.findall(r'bsad','bsad')) #['bsad'] # print(re.findall('\bbsad','bsad')) #['bsad'] #() | # print(re.search('(as)+','sadasas').group()) # asas # print(re.search('(as)|3','gas3').group()) # as # 匹配as或3 # ret = re.search('(?P<id>d{3})/(?P<name>w{3})','sd444/ooo') # print(ret.group('id')) #444 # print(ret.group('name')) #ooo # ret = re.match('asd','fsfsasd') # print(ret) # ret = re.split('[j,s]','sdjksal') #***** # print(ret) #['', 'd', 'k', 'al'] 先分j 再分s 中间加上'' # ret = re.sub('a..x','s..b','hsaalexdd') # print(ret) # hsas..bdd # obj = re.compile('.com') # ret = obj.findall('dsaasd.comcas') # print(ret) #['.com']
r'^([0-9a-zA-Z_]){0,19}@[0-9a-zA-Z-]{1,19}(.[0-9a-zA-Z-]+)+(.[a-zA-Z]+)+$' # 匹配邮箱