您好,登錄后才能下訂單哦!
#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
hello
可以了理解 貪婪模式匹配的字符多,非貪婪模式匹配的字符少;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。