亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

正則表達式+Python re模塊詳解

瀏覽:5日期:2022-08-01 13:46:47

正則表達式(Regluar Expressions)又稱規則表達式,在代碼中常簡寫為REs,regexes或regexp(regex patterns)。它本質上是一個小巧的、高度專用的編程語言。 通過正則表達式可以對指定的文本實現匹配測試、內容查找、內容替換、字符串分割 等功能。

re模塊介紹

Python中的re模塊提供了一個正則表達式引擎接口,它允許我們將正則表達式編譯成模式對象,然后通過這些模式對象執行模式匹配搜索和字符串分割、子串替換等操作。re模塊為這些操作分別提供了模塊級別的函數以及相關類的封裝。

正則表達式一些小規則 ①元字符

正則表達式+Python re模塊詳解

②量詞

正則表達式+Python re模塊詳解

③貪婪和非貪婪匹配

總是在量詞范圍內盡量多匹配 - 貪婪 總是在量詞范圍內盡量少匹配 - 惰性 .*?x 匹配任意內容任意次數 遇到x就停止 .+?x 匹配任意內容至少1次 遇到x就停止

④轉義符問題

. 有特殊的意義,取消特殊的意義 取消一個元字符的特殊意義有兩種方法 在這個元字符前面加 對一部分字符生效,把這個元字符放在字符組里 [.()+?*]

Python --> re模塊

findall會優先顯示分組內的內容*****取消優先顯示(?:正則)search只能返回第一個符合條件的項得到的結果需要.group取值默認獲取完整的匹配結果通過group(n)取第n個分組中的內容

# search 還是按照完整的正則進行匹配,顯示也顯示匹配到的第一個內容,但是我們可以通過給group方法傳參數# 來獲取具體文組中的內容ret = re.search(’9(d)(d)’,’19740ash93010uru’)print(ret) # 變量 -- > <re.Match object; span=(1, 4), match=’974’>if ret: print(ret.group()) # --> 974 print(ret.group(1)) # --> 7 print(ret.group(2)) # --> 4# findall # 取所有符合條件的,優先顯示分組中的# search 只取第一個符合條件的,沒有優先顯示這件事兒 # 得到的結果是一個變量 # 變量.group() 的結果 完全和 變量.group(0)的結果一致 # 變量.group(n) 的形式來指定獲取第n個分組中匹配到的內容# 加上括號 是為了對真正需要的內容進行提取ret = re.findall(’<w+>(w+)</w+>’,’<h1>askh930s02391j192agsj</h1>’)print(ret) # --> [’askh930s02391j192agsj’]

其他的內容在代碼中有詳細的注釋,大家可以復制我的代碼一步一步運行然后實驗

以下的內容有:split sub subn math,compile,finditer

# split sub subn math,compile,finditer# splitres = re.split(’d+’, 'cyx123456cyxx')print(res) # --> [’cyx’, ’cyxx’]res = re.split(’(d+)’, 'cyx123456cyxx') # 保留分組print(res) # --> [’cyx’, ’123456’, ’cyxx’]# sub 替換res = re.sub(’d+’, ’我把數字替換了’, 'cyx123456cyxxx123456') # 默認全部替換,當然也可以替換一次re.sub(’d+’,’我把數字替換了’,'cyx123456cyxxx123456',1)print(res) # --> cyx我把數字替換了cyxxx我把數字替換了# subn 替換了并顯示替換的次數res = re.subn(’d+’, ’我把數字替換了’, 'cyx123456cyxxx123456')print(res) # --> (’cyx我把數字替換了cyxxx我把數字替換了’, 2)# match 這個就相當與加了個^ (和search差不多) --> 主要用來規定這個字符號必須是什么樣的res = re.match(’d+’, ’cyx123456cyxxx’)print(res) # --> Noneres = re.match(’d+’, ’123cyx456cyxxx’)print(res.group()) # --> 123# compile -- 節省代碼的時間的工具# 假如同一個正則表達式要被使用多次# 節省了多次解析同一個正則表達式的時間ret = re.compile('d+')res = ret.search('cyx12456cyxXX123')print(res.group()) # --> 12456# finditer --> 節省空間ret = re.finditer('d+', 'cyx123456cyxxx125644')for r in ret: print(r.group()) # --> 123456 # 125644# 怎么又節省時間又節省空間呢?ret = re.compile(’d+’)res = ret.finditer('cyx222231fddsf45746sdf2123sdf56456sdf10123sdf123132sdf')for r in res: print(r.group())'''2222314574621235645610123123132'''# 分組命名(?P<組名>正則) (?P=組名)# 有的時候我們要匹配的內容是包含在不想要的內容之中的,# 只能先把不想要的內容匹配出來,然后再想辦法從結果中去掉# 分組命名的用法 (找兩個組里面是一樣的內容)exp = ’<abc>asdasf54545645698asdasd</abc>00545sdfsdf</abd>’ret = re.search(’<(?P<tag>w+)>.*?</(?P=tag)’, exp)print(ret) # -- > <re.Match object; span=(0, 33), match=’<abc>asdasf54545645698asdasd</abc’># exp2:import reret = re.search(’d(d)d(w+?)(d)(w)d(d)d(?P<name1>w+?)(d)(w)d(d)d(?P<name2>w+?)(d)(w)’,’123abc45678agsf_123abc45678agsf123abc45678agsf’)print(ret.group(’name1’)) # -- > agsf_123abcprint(ret.group(’name2’)) # -- > agsf

今日小思考

當我們有一個這樣的列表:

lis = [’’, ’z’, ’c’, ’asd’, ’sdf’, ’’, ’asd’]

那么我們如何將里面的空字符刪除呢?

ret = filter(lambda n: n, lis)print(list(ret)) # --> [’z’, ’c’, ’asd’, ’sdf’, ’asd’]

總結

到此這篇關于正則表達式+Python re模塊詳解的文章就介紹到這了,更多相關正則表達式 python re模塊內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲国产天堂久久综合9999 | 欧美视频黑鬼大战白妞 | 久久国产免费观看 | 国产亚洲美女精品久久久 | 久久成人免费播放网站 | 无遮挡一级毛片私人影院 | 亚洲欧洲精品国产二码 | 欧美成人性毛片免费版 | 高清色黄毛片一级毛片 | 麻豆传媒国产 | 两个人看的www视频中文字幕 | www.香蕉视频在线观看 | a毛片久久免费观看 | 亚洲欧美日韩国产精品26u | 亚洲精品色婷婷在线影院麻豆 | 免费一级成人免费观看 | 久久99精品国产麻豆宅宅 | 一区二区三区四区在线观看视频 | 久久伊人婷婷 | 一级视频网站 | 特黄特黄aaaa级毛片免费看 | 国产h视频在线 | 小优视频高清视频在线看 | 在线免费观看a级片 | 视频一区二区国产 | 亚洲福利一区二区精品秒拍 | 亚洲综合色区图片区 | 中国女人野外做爰视频在线看 | 欧美最新一区二区三区四区 | 久久婷婷五月综合色丁香 | 免费视频爱爱太爽了 | 爱爱五月天 | 亚洲欧美日韩国产精品26u | 久久久久18 | 免费人成在线观看视频不卡 | 一区国产传媒国产精品 | 特黄特色的视频免费播放 | 在线午夜 | 国产成人精品日本亚洲网址 | 国产无限免费观看黄网站 | 亚洲一区二区三区免费看 |