#day-1 ''' author:hello-python date:2019.1.14 goal:正则表达式 ''' import re #1) line = 'Helllopython' #^H 表示匹配以w开头的字符串,只匹配一次; #.表示该字符可为任意字符,只匹配一次; #* 表示前面的字符能够出现任意次,至少0次,屡次匹配; reg_str1 = '^H.*' #re.match 函数 #第一个参数是匹配的格式; #第二个参数是匹配字符串; #返回值为:匹配成功,返回match对象,是否返回:none if re.match(reg_str1,line): print("匹配成功了~") #reg_str1 = '^w.*' 匹配成功 else: print("匹配失败咩") #reg_str1 = '^w.*' 匹配失败 #返回:匹配成功~ #2) #12$表示匹配以23结尾的字符串,匹配一次; line2 = 'Helllopython' reg_str2 = '^H.*n$' if re.match(reg_str2,line2): print("匹配成功~") else: print("匹配失败咩~") #返回:匹配成功~ #3) line3 = 'hellopythonzuiku' #() 内为匹配模式,经过group函数能够取出匹配的结果; #正则表达式贪婪模式:从左边开始匹配; reg_str3 = '.*(o.*o).*' test01 = re.match(reg_str3,line3) if test01: print(test01.group(1)) else: print("匹配失败咩~!") #返回结果opytho #4) #知识点:正则表达式的贪婪与非贪婪匹配 #如:String str="abcxbc"; # Patter p="ab.*c"; #贪婪匹配:正则表达式通常趋向于最大长度匹配,也就是所谓的贪婪匹配。 #如上面使用模式p匹配字符串str,结果就是匹配到:abcxbc(ab.*c)。 #非贪婪匹配:就是匹配到结果就好,就少的匹配字符。 #如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。 #编程中如何区分两种模式 # 默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。 # 量词:{m,n}:m到n个 # *:任意多个 # +:一个到多个 # ?:0或一个 #了解了贪婪模式和非贪婪模式后继续 reg_str03 = '.*?(h.*o).*' #半贪婪模式 reg_str04 = '.*?(h.*?o).*' #非贪婪模式 test01 = re.match(reg_str03,line3) test02 = re.match(reg_str04,line3) if test01 and test02: print(test01.group(1)) print(test02.group(1)) else: print("匹配失败!!!!") #返回 匹配失败!
匹配结果:
hellopytho
hellopython
能够了理解 贪婪模式匹配的字符多,非贪婪模式匹配的字符少;正则表达式