#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
能夠了理解 貪婪模式匹配的字符多,非貪婪模式匹配的字符少;正則表達式