站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        筆記之 Python正則表達式

        筆記之 Python正則表達式

        文章目錄

        • 0、前言
        • 1、正則表達式模式
        • 2、正則表達式修飾符 – 可選標(biāo)志
          • 2.1、`re.IGNORECASE`(`re.I`)
          • 2.2、`re.ASCII`(`re.A`)
          • 2.3、`re.DOTALL`(`re.S`)
          • 2.4、`re.MULTILINE`(`re.M`)
          • 2.5、`re.VERBOSE`(re.X)
          • 2.6、修飾符的疊加
        • 3、正則表達式函數(shù)
          • 3.1、查找單個匹配項的函數(shù)
            • Example 3.1.1
            • Example 3.1.2
            • Example 3.1.3
          • 3.2、查找多個匹配項的函數(shù)
            • Example 3.2.1
          • 3.3、分割
            • Example 3.3.1
        import re

        0、前言

        本篇筆記基于菜鳥教程以及該知乎教程,融入了自己的一些學(xué)習(xí)心得。

        1、正則表達式模式

        筆記之 Python正則表達式

        高亮處是我的補充,因為根據(jù)實際情況確實是能匹配到的
        筆記之 Python正則表達式

        這邊我就偷點懶了哈,直接截的是菜鳥教程的圖。

        2、正則表達式修飾符 – 可選標(biāo)志

        2.1、re.IGNORECASE(re.I)

        雖然第1節(jié)是常量,但我們必須先簡要提一下re.findall這個函數(shù),因為它是貫穿這一節(jié)的函數(shù)。
        re.findall(pattern, string, flag=0): 從字符串任意位置查找,返回一個列表。pattern是欲匹配的字符(串),string是查找源,flag是修飾符,默認是0

        re.I的作用是忽略字符大小寫

        text = "I'm Jasmine-Feng. My student number is No. 321432"pattern = r"Jasmine-FENG"print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))

        N.B. pattern被賦了一個r字符串,這個r字符串的作用是避免轉(zhuǎn)義,r是raw的縮寫,也就是保持原樣的意思。可看這篇博文。一般來說,使用正則表達式都會用到這個r字符串。

        Default:  []Ignore upper/lower case:  ['Jasmine-Feng']Process finished with exit code 0

        在默認情況下,區(qū)分大小寫,找不到ENG;若不區(qū)分,則可以找到eng。

        2.2、re.ASCII(re.A)

        re.A的作用是只匹配ASCII碼支持的字符,那么具體指哪些字符呢?下圖來自百度百科。
        筆記之 Python正則表達式
        漢字是不在這個里面的,所以如果修飾符是re.A的話就匹配不了漢字了哈~

        text = "我是Jasmine-Feng. 我的學(xué)號是No. 321432"pattern = r"w+"print('Default: ', re.findall(pattern,text))print('ASCII: ', re.findall(pattern,text,flags=re.A))

        w+的作用是匹配一個或多個字母數(shù)字下劃線漢字

        Default:  ['我是Jasmine', 'Feng', '我的學(xué)號是No', '321432']ASCII:  ['Jasmine', 'Feng', 'No', '321432']Process finished with exit code 0

        2.3、re.DOTALLre.S

        在正則表達式模式中,.是用來筆記之 Python正則表達式

        text = "我t是Jasmine-Fneng. 我%的?學(xué)號是No. 321432"pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))

        .*的作用是匹配長度至少為0的字符(串),emmm,好像是句廢話?事實上,只要整段話不被換行符截斷,就可以得到整個字符串(外加一個空字符串)。

        Default:  ['我t是Jasmine-F', '', 'eng. 我%的?學(xué)號是No. 321432', '']DOTALL:  ['我t是Jasmine-Fneng. 我%的?學(xué)號是No. 321432', '']Process finished with exit code 0

        2.4、re.MULTILINE(re.M)

        $匹配定位到字符串末尾,^定位到字符串開頭,默認情況下,如果換行,是不能定位到新一行的行頭/尾的,而用re.M修飾則可以,也就是多行模式。

        text = "我t是Jasmine-Fneng. 我%的?n學(xué)號是No. 321432"pattern = r'.$'pattern2 = r'^.'print('Default, end: ', re.findall(pattern, text))print('MULTILINE, end: ', re.findall(pattern, text, re.M))print('Default, start: ', re.findall(pattern2, text))print('MULTILINE, start: ', re.findall(pattern2, text, re.M))
        Default, end:  ['2']MULTILINE, end:  ['F', '?', '2']Default, start:  ['我']MULTILINE, start:  ['我', 'e', '學(xué)']Process finished with exit code 0

        2.5、re.VERBOSE(re.X)

        verbose是“詳實的、冗長的”意思,通過該修飾符可以在正則表達式中加入注釋。注意,是往pattern里面加,不是往text加!我一開始以為是可以往text加注釋,然后調(diào)試半天都得不到結(jié)果。。。

        text = '朋友們好啊!我是xxxxxx拳掌門人xxx~'pattern = r'''朋友們  # 主語               好啊!  # 謂語            '''print(re.findall(pattern, text,re.VERBOSE))
        ['朋友們好啊!']Process finished with exit code 0

        2.6、修飾符的疊加

        使用|可以疊加修飾。

        text = 'Hello everybody!n我是xxxxxx拳掌門人xxx~'pattern = r'BODY.*$'print(re.findall(pattern, text, re.I))print(re.findall(pattern, text, re.M))print(re.findall(pattern, text, re.M | re.I))
        [][]['body!']Process finished with exit code 0

        3、正則表達式函數(shù)

        3.1、查找單個匹配項的函數(shù)

        函數(shù) 功能
        search 從任意位置開始搜索
        match 從開頭搜索,不用完全匹配
        fullmatch 從開頭搜索,必須完全匹配

        其實我本來是寫了自己的例子的,但是瀏覽器給我誤關(guān)了,又沒保存(心態(tài)直接炸裂

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 色婷婷久久久SWAG精品| 51午夜精品免费视频| 尤物TV国产精品看片在线| 精品国产网红福利在线观看 | 久久精品亚洲福利| 国产精品视频网站你懂得| 亚洲精品无码专区在线在线播放| 精品国产一区二区22| 精品一区二区三区四区| 老司机亚洲精品影院无码| 久久精品国产一区二区| 欧美一区二区精品| 久久夜色精品国产噜噜噜亚洲AV| 精品欧洲AV无码一区二区男男| 久久青青草原精品国产不卡| 1024国产欧美日韩精品| 日韩欧美国产精品第一页不卡| 国产A∨免费精品视频| 岛国精品一区免费视频在线观看| 青娱乐国产精品视频| 国产精品V亚洲精品V日韩精品| 91麻豆精品国产自产在线观看亚洲| 日韩精品电影一区亚洲| 国产精品第一区第27页| 91麻豆精品国产自产在线观看一区 | 国产亚洲精品影视在线产品| 日韩AV毛片精品久久久| 国产精品爽黄69天堂a| 青草国产精品久久久久久| 日韩欧美精品不卡| 欧美肥屁VIDEOSSEX精品| 亚洲AV无码成人精品区大在线| 久久无码精品一区二区三区| 国产精品性爱| 在线观看日韩精品| 2022国产精品不卡a| 国精品无码一区二区三区左线| 日韩国产精品无码一区二区三区| 亚洲欧洲精品成人久久曰影片| 麻豆国产精品VA在线观看不卡| 国产久爱免费精品视频|