关于()、[ ]、{}
(一)、{} 表示重复匹配的次数
若n>=0, {n}表示匹配确定的n次; {n,}表示至少匹配n次;
若m>n>=0,{n,m}表示最少匹配n次,最多匹配m次。
import re s = 'woooow wooow woow wow ww' print(re.findall('wo{0}w',s)) #['ww'] print(re.findall('wo{0,2}w',s)) #['woow', 'wow', 'ww'] print(re.findall('wo{2}w',s)) #['woow'] print(re.findall('wo{2,}w',s)) #['woooow', 'wooow', 'woow']
(二)、[ ] 定义匹配字符的范围
注意1:按字符逐个匹配
import re s = 'woooow wooow woow wow ww' print(re.findall('[ w]',s)) #按字符逐个匹配 #['w', 'w', ' ', 'w', 'w', ' ', 'w', 'w', ' ', 'w', 'w', ' ', 'w', 'w']
注意2:[0-9]表示匹配数字0-9
s = '12435fjefj34' print(re.findall('[0-4]',s)) #匹配数字0-4 #['1', '2', '4', '3', '3', '4']
注意3:进行贪婪匹配的时候,需要注意空字符''
s = '12435fjefj34 ,woew' print(re.findall('[0-9]*',s)) # ['12435', '', '', '', '', '', '34', '', '', '', '', '', '', ''] print(re.findall('[0-9]+',s)) # # ['12435', '34'] print(re.findall('[0-9]?',s)) # ['1', '2', '4', '3', '5', '', '', '', '', '', '3', '4', '', '', '', '', '', '', ''] print(re.findall('[0-9]',s)) #['1', '2', '4', '3', '5', '3', '4']
注意4:[^...] 表示非,取不是[ ]中的字符。
s = 'hello3434' n = re.findall('[^hello]',s) # '^'非 print(n) # ['3', '4', '3', '4']
(三)、() 提取匹配的字符串
注意1:表达式中若有(),表示仅提取()中的内容。
import re s = 'woooow wooow woow wow ww' # 提取()内的字符串 print(re.findall('w(\s*)w',s)) # [' ', ' ', ' ', ' '] print(re.findall('w(o*)w',s)) # ['oooo', 'ooo', 'oo', 'o', '']
注意2:()表示分组的概念
需要重复匹配单个字符,使用*、+等限定符;需要重复匹配字符串,使用(),并得到最后的值。
import re s = 'wowwooow woow wow www' # 重复匹配字符串,有几个()结果的几个字符串 ret = re.findall('(wo*w){2}',s) # 匹配满足(wo*w)(wo*w)条件的字符串,并得到最后一个()里内容 print(ret) #['wooow']
注意3: ()与 | 连用,表示字符串的 ‘或’
import re s = 'hello world! 123hallo world!456' n = re.findall('(he|ha)',s) # '|'或 print(n) # ['he', 'ha']
浙公网安备 33010602011771号