【Python】学习笔记总结6(正则表达式)
生活随笔
收集整理的這篇文章主要介紹了
【Python】学习笔记总结6(正则表达式)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 六、Python正則表達(dá)式
- 1.re模塊
- 2.匹配規(guī)則-字符
- 2.1`.`的使用
- 2.2`[]`的使用
- 2.3`\d`的使用
- 2.4`\D`的使用
- 2.5`\s`的使用
- 2.6`\S`的使用
- 2.7`\w`的使用
- 2.8`\W`的使用
- 3.匹配規(guī)則-字符數(shù)量
- 3.1`*`的使用
- 3.2`+`的使用
- 3.3`\?`的使用
- 3.4`{m}`的使用
- 3.5`{m,}`的使用
- 3.6`{n,m}`的使用
- 4.匹配規(guī)則-原生字符串
- 5.匹配規(guī)則-開頭和結(jié)尾
- 6.匹配規(guī)則-分組匹配
- 6.1`|`的使用
- 6.2`(ab)`的使用
- 6.3`\num`的使用
- 6.4`(?P)`的使用
- 6.5`(?P=name)`的使用
- 7.re.compile
- 8.re.search
- 9.re.findall
- 10.re.sub
- 11.re.split
- 12.貪婪模式和非貪婪模式
六、Python正則表達(dá)式
1.re模塊
2.匹配規(guī)則-字符
2.1.的使用
# .的使用:匹配除了換行符之外的字符 data = '王一' partternA = '王.' res = re.match(partternA,data) if res :print(res.group())2.2[]的使用
# []的使用:匹配中括號中任意一個字符 data = 'sdfg' partternA = '[a-z]' res = re.match(partternA,data) if res :print(res.group())2.3\d的使用
# \d的使用:匹配數(shù)字0-9 data = '9g' partternA = '\d' res = re.match(partternA,data) if res :print(res.group())2.4\D的使用
# \D的使用:匹配非數(shù)字0-9 data = 's9g' partternA = '\D' res = re.match(partternA,data) if res :print(res.group())2.5\s的使用
# \s的使用:匹配空白字符或tab data = ' s9g' partternA = '\s' res = re.match(partternA,data) if res :print(res.group())2.6\S的使用
# \S的使用:匹配非(空白字符或tab) data = 's9g' partternA = '\S' res = re.match(partternA,data) if res :print(res.group())2.7\w的使用
# \w的使用:匹配單詞字符,a-z,A-Z,0-9,_ data = 's9g' partternA = '\w' res = re.match(partternA,data) if res :print(res.group())2.8\W的使用
# \W的使用:匹配非單詞字符 data = '@s9g' partternA = '\W' res = re.match(partternA,data) if res :print(res.group())3.匹配規(guī)則-字符數(shù)量
3.1*的使用
匹配前一個字符出現(xiàn)0次或者無限次,即可有可無
data = 'Any' partternA = '[A-Z][a-z]*'#從第二位開始后邊都匹配小寫字符 res = re.match(partternA,data) if res :print(res.group())3.2+的使用
匹配前一個字符出現(xiàn)1次或者無限次,即至少有1次
#不能以數(shù)字開頭,只包含數(shù)字字母xia'huai'x'na data = 'MY_Name' partternA = '[a-zA-Z_]+[\w]*' res = re.match(partternA,data) if res :print(res.group())3.3\?的使用
匹配前一個字符出現(xiàn)1次或者0次,即要么有1次,要么沒有
data = '7' partternA = '[a-zA-Z_]+?[0-9]'#第一位可有可無 res = re.match(partternA,data) if res :print(res.group())3.4{m}的使用
匹配前一個字符出現(xiàn)m次
data = '12345' partternA = '\d{4}'#精確匹配多少個數(shù)字 res = re.match(partternA,data) if res :print(res.group())3.5{m,}的使用
匹配前-一個字符至少出現(xiàn)m次 data = '12345' partternA = '\d{4,}'#精確匹配4-max個數(shù)字 res = re.match(partternA,data) if res :print(res.group())3.6{n,m}的使用
匹配前一個字符出現(xiàn)從n到m次
匹配前-一個字符至少出現(xiàn)m次 data = '12345' partternA = '\d{4,5}'#精確匹配4-5個數(shù)字 res = re.match(partternA,data) if res :print(res.group())- 郵箱
4.匹配規(guī)則-原生字符串
一般運用在路徑上
data = 'c\\a.txt' partternA = r'c\\a.txt'#正則前面加r,不轉(zhuǎn)義 res = re.match(partternA,data) if res :print(res.group())5.匹配規(guī)則-開頭和結(jié)尾
data = 'Myname' partternA = '^M.*'#以M開頭 res = re.match(partternA,data) if res :print(res.group()) data = 'Myname' partternA = '^M\w{5}'#以M開頭后邊5個長度任意字符 res = re.match(partternA,data) if res :print(res.group()) data = 'Myname123@163.com' partternA = '[\w]{6,11}@[\w]{3}.com$'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())6.匹配規(guī)則-分組匹配
6.1|的使用
匹配左右任意-一個表達(dá)式
data = 'zzz-123456789' partternA = '([0-9]*)-(\d*)|([a-z]*)-(\d*)'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())6.2(ab)的使用
將括號中字符作為一個分組data = 'zzz-123456789' partternA = '([0-9]*)-(\d*)|([a-z]*)-(\d*)'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())6.3\num的使用
引用分組num匹配到的字符串
- 一般應(yīng)用于html文檔
6.4(?P)的使用
分組起別名
data = '<div><h1>測試數(shù)據(jù)</h1></div>' partternA = r'<(?P<div>\w*)><(?P<d>\w*)>.*</(?P=d)></(?P=div)>'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())6.5(?P=name)的使用
引用別名為name分組匹配到的字符串_
data = '<div><h1>測試數(shù)據(jù)</h1></div>' partternA = r'<(?P<div>\w*)><(?P<d>\w*)>.*</(?P=d)></(?P=div)>'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())7.re.compile
- compile函數(shù)根據(jù)- -個模式字符串和可選的標(biāo)志參數(shù)生成一-個正則表達(dá)式對象。該對象擁有- -系列方法用于正則表達(dá)式匹配和替換。re 模塊也提供了與這些方法功能完全一致的函數(shù),這些函數(shù)使用一個模式字符串做為它們的第一個參數(shù)。
compile re模塊中的編譯方法可以把個 字符串編譯成字節(jié)碼
優(yōu)點:在使用正則表達(dá)式進(jìn)行match的操作時,python會將 字符串轉(zhuǎn)為正則表達(dá)式對象,而如果使用complie則只需要完成次轉(zhuǎn)換即可, 以后再使用模式對 象的話無需重復(fù)轉(zhuǎn)換,
8.re.search
str = 'best language in the world' res =re.search('world',str) print(res.group())9.re.findall
str = 'best language in the world in in' res =re.findall('i.',str) print(res)10.re.sub
str = 'best language in the world in in' pat = '[a-zA-Z]+' res =re.sub(pat,'C#',str) res =re.subn(pat,'C#',str) print(res)11.re.split
str = 'best language in the world in in' pat = 'in' res =re.split('in',str) print(res)12.貪婪模式和非貪婪模式
- 圖片匹配
貪婪
非貪婪
parttern = ‘<img src = ''(.*?)>’總結(jié)
以上是生活随笔為你收集整理的【Python】学习笔记总结6(正则表达式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】学习笔记总结5(Pyth
- 下一篇: 【Python】学习笔记总结(第一阶段(