久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

      筆記之 Python正則表達(dá)式

      筆記之 Python正則表達(dá)式

      文章目錄

      • 0、前言
      • 1、正則表達(dá)式模式
      • 2、正則表達(dá)式修飾符 – 可選標(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、正則表達(dá)式函數(shù)
        • 3.1、查找單個(gè)匹配項(xiàng)的函數(shù)
          • Example 3.1.1
          • Example 3.1.2
          • Example 3.1.3
        • 3.2、查找多個(gè)匹配項(xiàng)的函數(shù)
          • Example 3.2.1
        • 3.3、分割
          • Example 3.3.1
      import re

      0、前言

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

      1、正則表達(dá)式模式

      筆記之 Python正則表達(dá)式

      高亮處是我的補(bǔ)充,因?yàn)楦鶕?jù)實(shí)際情況確實(shí)是能匹配到的
      筆記之 Python正則表達(dá)式

      這邊我就偷點(diǎn)懶了哈,直接截的是菜鳥(niǎo)教程的圖。

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

      2.1、re.IGNORECASE(re.I)

      雖然第1節(jié)是常量,但我們必須先簡(jiǎn)要提一下re.findall這個(gè)函數(shù),因?yàn)樗秦灤┻@一節(jié)的函數(shù)。
      re.findall(pattern, string, flag=0): 從字符串任意位置查找,返回一個(gè)列表。pattern是欲匹配的字符(串),string是查找源,flag是修飾符,默認(rèn)是0

      re.I的作用是忽略字符大小寫(xiě)

      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被賦了一個(gè)r字符串,這個(gè)r字符串的作用是避免轉(zhuǎn)義,r是raw的縮寫(xiě),也就是保持原樣的意思。可看這篇博文。一般來(lái)說(shuō),使用正則表達(dá)式都會(huì)用到這個(gè)r字符串。

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

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

      2.2、re.ASCII(re.A)

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

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

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

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

      2.3、re.DOTALLre.S

      在正則表達(dá)式模式中,.是用來(lái)筆記之 Python正則表達(dá)式

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

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

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

      2.4、re.MULTILINE(re.M)

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

      text = "我t是Jasmine-Fneng. 我%的?n學(xué)號(hào)是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是“詳實(shí)的、冗長(zhǎng)的”意思,通過(guò)該修飾符可以在正則表達(dá)式中加入注釋。注意,是往pattern里面加,不是往text加!我一開(kāi)始以為是可以往text加注釋?zhuān)缓笳{(diào)試半天都得不到結(jié)果。。。

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

      2.6、修飾符的疊加

      使用|可以疊加修飾。

      text = 'Hello everybody!n我是xxxxxx拳掌門(mén)人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、正則表達(dá)式函數(shù)

      3.1、查找單個(gè)匹配項(xiàng)的函數(shù)

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

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

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)