天天看點

python五十七課——正規表達式(多個字元)

示範比對多個字元:

以下x、y、n都是變量名:

分類:

1).模糊比對:

x?:表示0個或者1個 取值範圍:[0,1]

x+:表示1個或者多個 取值範圍:[1,無窮大)

x*:表示0個或者多個 取值範圍:[0,無窮大)

【注意】

以上三種符号(?、+、*)都滿足貪婪比對的特點,

意味着在比對的前提下,盡可能多的傳回資料

思考:如果取消貪婪行為? --> 達到的效果就是在比對的前提下,盡可能少的傳回資料

代碼展現:在正則的最後顯示的定義一個?即可

2).精确比對:

n{x}:n比對x次

n{x,}:n最少有x次,最多無窮大 範圍:[x,無窮大)

n{x,y}:n最少有x次,最多有y次 範圍:[x,y]

import re
str1='bbbbbbbbbbbcccbbbb'
print(re.search(r'b?',str1).group())
print(re.search(r'b??',str1).group())
print(re.search(r'b+',str1).group())
print(re.search(r'b+?',str1).group())
print(re.findall(r'b?',str1))
print(re.findall(r'b?',str1))
print(re.findall(r'b+',str1))
print(re.findall(r'b+?',str1))
print(re.findall(r'b*',str1))
print(re.findall(r'b*?',str1))

#需求:嘗試比對内容:hank ... man
str1='hank is a good man hank is a nice man hank is a cool man'
regex=r'hank.*man'
# regex=r'hank.*?man'
lt=re.findall(regex,str1)
print(lt)
print(re.search(regex,str1).group())
print('實作精準比對...')

str1='aaaabbbaaaaaaaaaaaa'
print(re.findall(r'a{3}',str1))
print(re.findall(r'a{3,}',str1))
print(re.findall(r'a{3,}?',str1))
print(re.findall(r'a{6,8}',str1))
print(re.findall(r'a{6,8}?',str1))           

複制