#day-2'''author:hello-pythondate:2019.1.15goal:正则表达式'''import reline01 = 'hellopython'def regtest(reg_str,line = line01): test = re.match(reg_str, line) if test: print(test.group(1)) else: print("匹配失败!")# + :表示前面的字符,至少出现一次reg_str04 = '.*(h.+l).*' # (b.+b)表示b与b之间至少有一个字符regtest(reg_str04) # result : bcxb#{n} ;控制前面字符出现次数#a{2}:表示a出现次数#b{3,4} :表示b至少出现3次最多出现4次#c{4,}:表示c至少出现4次reg_str05 = '.*(b.{2}b).*' #(b.{2}b) 表示匹配到b与b之间,只有两个字符;reg_str06 = '.*(b.{3,4}b).*' #(b.{3,4}b) 表示b与b之间匹配到3到4个字符;reg_str07 = '.*(b.{4,}b).*' #(b.{4,}b) 表示b与b之间至少4个字符;# | :表示 或#(abc|123) : 表示匹配到abc或者123,都算匹配成功reg_str08='.*(hel|abc)'reg_str09='.*(abc|hel)'#[]:表示 里面包含的内容都可以进行匹配,包含内容只有表面字符含义#[abcd]:表示 只要这个字符为a/b/c/d中的一个都可以匹配成功#[0-9] :表示 只要这个字符在0-9 区间内,都可以匹配成功#[^x]:表示匹配 字符不为xline02='电话:17629261608'reg_str10='.*(1[76][0-9]{9}).*' reg_str11='.*(1[76][^1]{9}).*'regtest(reg_str10,line02) # result :17629261608regtest(reg_str11,line02) # result : 匹配失败!# \s 表示匹配空格,匹配一次# \S 表示匹配不是空格的字符,匹配一次#\w 表示匹配 A-Z、0-9、_ 中的容易字符,匹配一次#\W与\w 相反#\d 表示数字# [\u4E00-\u9FA5] : 表示所有汉字,unicode 编码def regtest_test(reg_str,line=line01): test = re.match(reg_str,line) if test: print(test.group(1)+':' +test.group(2)+ '-'+test.group(3)+ '-'+test.group(4)) else: print("匹配失败~!")#简单实例:str01 = '小王出生于2000年2月2日'str02 = '小刘出生于2001-01-20'str03 = '小娟出生于1999/9/9'str04 = '小敏出生于1998.8.5'str = [str01,str02,str03,str04]#提取出姓名+出生日期#匹配模式reg_str12 = '(.*)出生于(\d{4})[.年/-](\d{1,2})[.月/-](\d{1,2}).*?'for i in range(4): regtest_test(reg_str12,str[i]) 执行结果小王:2000-2-2小刘:2001-01-20小娟:1999-9-9小敏:1998-8-5