日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】学习笔记总结6(正则表达式)

發(fā)布時間:2024/9/30 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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模塊



import re str = 'best language in the world' result = re.match('b',str) print(result.group())

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())
  • 郵箱
data = '123456@163.com' partternA = '[a-zA-Z0-9]{6,11}@163.com' 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文檔
data = '<html><h1>測試數(shù)據(jù)</h1></html>' partternA = r'<(.+)><(.+)>(.+)</\2></\1>'#以.com結(jié)尾 res = re.match(partternA,data) if res :print(res.group())

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)換,

reobj = re.compile('\d{4}') res = reobj.match('1234567') print(res.group())

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 = ''(.*)>

非貪婪

parttern =<img src = ''(.*?)>

總結(jié)

以上是生活随笔為你收集整理的【Python】学习笔记总结6(正则表达式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。