欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python 入門之 內置模塊 -- re模塊

系統 1852 0

Python 入門之 內置模塊 -- re模塊

1、re 模塊

(1)什么是正則?

正則就是用一些具有特殊含義的符號組合到一起(稱為正則表達式)來描述字符或者字符串的方法。或者說:正則就是用來描述一類事物的規則。 (在Python中)它內嵌在Python中,并通過 re 模塊實現。正則表達式模式被編譯成一系列的字節碼,然后由用 C 編寫的匹配引擎執行。

元字符 匹配內容
\w 匹配字母(包含中文)或數字或下劃線
\W 匹配非字母(包含中文)或數字或下劃線
\s 匹配任意的空白符
\S 匹配任意非空白符
\d 匹配數字
\D 匹配非數字
\A 從字符串開頭匹配
\z 匹配字符串的結束,如果是換行,只匹配到換行前的結果
\n 匹配一個換行符
\t 匹配一個制表符
^ 匹配字符串的開始
$ 匹配字符串的結尾
. 匹配任意字符,除了換行符,當re.DOTALL標記被指定時,則可以匹配包括換行符的任意字符。
[...] 匹配字符組中的字符
... 匹配除了字符組中的字符的所有字符
* 匹配0個或者多個左邊的字符。
+ 匹配一個或者多個左邊的字符。
匹配0個或者1個左邊的字符,非貪婪方式。
{n} 精準匹配n個前面的表達式。
{n,m} 匹配n到m次由前面的正則表達式定義的片段,貪婪方式
ab 匹配a或者b
() 匹配括號內的表達式,也表示一個組

---------------------------------------------------------------------匹配模式-------------------------------------------------------------------------

          
            import  re 
          
        

<1> \w 字母,數字,下劃線,中文

          
            print(re.findall("\w","小明-Marry_dsb123嘯天吃D早餐"))   # \w 字母.數字.下劃線.中文 
          
        

<2> \W 不是字母,數字,下劃線,中文

          
            print(re.findall("\W","小明-Marry_dsb123嘯天吃D早餐"))   # \w 不是字母.數字.下劃線.中文 
          
        

<3> \d 匹配數字

          
            print(re.findall("\d","十10⑩"))                       #  \d 匹配數字   
          
        

<4> \D 匹配非數字

          
            print(re.findall("\D","十10⑩"))                       # \D 匹配非數字
          
        

<5> \A 從字符串開頭匹配 以什么開頭 常用 ^a

          
            print(re.findall("\Aa","asfdasdfasdfalex"))
          
        
          
            print(re.findall("^a","alex"))                        # 以什么開頭  
          
        

<6> \Z 從字符串結尾匹配 以什么結尾 常用 $

          
            print(re.findall("d\Z","asfdasdfasdfalex"))
          
        
          
            print(re.findall("x$","alex"))                        # 匹配什么結尾  

          
        

<7> \n 匹配換行符

          
            print(re.findall("\n","alex\nwusir"))

          
        

<8> \t 匹配制表符

          
            print(re.findall("\t","alex\twusir"))

          
        

<9> 字符串 匹配相應的字符串

          
            print(re.findall("alex","alex\twusiralex"))

          
        

<10> [...] 匹配字符組中的字符

          
            print(re.findall('[0-9]',"小明-Marry_dsb123嘯天吃D早餐"))                 
print(re.findall('[a-z]',"小明-Marry_dsb123嘯天吃D早餐"))
print(re.findall('[A-Z]',"小明-Marry_dsb123嘯天吃D早餐"))

          
        

<11> ^[ ] 匹配非字符組中的字符

          
            print(re.findall("[^0-9a-z]","123alex456"))  

          
        

<12> *匹配0個或多個左邊的字符 貪婪匹配

          
            print(re.findall("a*","marry,aa,aaaa,bbbbaaa,aaabbbaaa"))    # 匹配*左側字符串0次或多次  貪婪匹配

          
        

<13> +匹配1個或多個左邊的字符 貪婪匹配

          
            print(re.findall("a+","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))  匹配左側字符串一次或多次  貪婪匹配 

          
        

<14> ?匹配0個或1個左邊的字符 非貪婪匹配

          
            print(re.findall("a?","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))  # 匹配?號左側0個或1個 非貪婪匹配

          
        

<15> {n} 精準匹配左邊n個前面的表達式

          
            print(re.findall("[0-9]{11}","18612239999,18612239998,136133333323")) # 指定查找的元素個數 

          
        

<16> {n,m} 匹配n到m次前面的正則表達式定義的片段

          
            print(re.findall("a{3,8}","alex,aaaabbbaaaaabbbbbbaaa,aaaaaaaaabb,ccccddddaaaaaaaa")) 

          
        

<17> a|b 匹配a或b

          
            print(re.findall("a|b","alexdsb"))

          
        

<18> () 匹配括號內的表達式,也表示一組

          
            print(re.findall("
            
              (.+)
            
            ","
            
              alex
            
            
              wusir
            
            "))     #分組  
print(re.findall("
            
              (.+?)
            
            ","
            
              alex
            
            
              wusir
            
            "))   #控制貪婪匹配 

          
        

<19> . 匹配任意字符,除了換行符 當定義re.DOTALL時,可以匹配換行符

          
            print(re.findall("a.c","abc,aec,a\nc,a,c"))           # 匹配任意一個字符串(\n除外) 

          
        
          
            print(re.findall("a.c","abc,aec,a\nc,a,c",re.DOTALL))

          
        

<20> ?. 就沒有任意功能了

          
            print(re.findall("-\d+\.\d+|-[0-9]|\d+",s))

          
        

<21> \s 匹配空格

          
            print(re.findall("\s","alex\tdsbrimocjb"))            # \s 匹配空格

          
        

<22> \S 匹配非空格

          
            print(re.findall("\S","alex\tdsbrimocjb"))            # \s 匹配非空格

          
        

試題:

          
            有如下字符串:'alex_sb ale123_sb wu12sir_sb wusir_sb ritian_sb' 的 alex wusir '找到所有帶_sb的內容

          
        

答案:

          
            s = 'alex_sb ale123_sb wu12sir_sb wusir_sb ritian_sb'print(re.findall("(.+?)_sb",s))

          
        

-------------------------------------------------------------------常用方法----------------------------------------------------------------

(1)findall 全部找到返回的是一個列表

          
            print(re.findall("alex","alexdsb,alex_sb,alexnb,al_ex"))

          
        

(2) search 從字符串中任意位置進行匹配查找到一個就停止了,返回的是一個對象. 獲取匹配的內容必須使用.group()進行獲取

          
            print(re.search("a.+","lexaaaa,bssssaaaasa,saaasaasa").group())

          
        

(3)match 從字符串開始位置進行匹配

          
            print(re.match("a.+","alexalexaaa,bssssaaaasa,saaasaasa").group())

          
        

試題

search 和 match 的區別

search 從任意位置開始查找

match 從頭開始查找,如果不符合就不繼續查找了

都用group()進行查看

(4)split -- 分割 必須要有[ ]

          
            print(re.split("[:;,.!#]","alex:dsb#wusir.djb"))

          
        

(5)sub -- 替換

          
            s = "alex:dsb#wusir.djb"
print(re.sub("d","e",s,count=1))

          
        

(6)complie -- 定義匹配規則

          
            s = re.compile("\w")
print(s.findall("alex:dsb#wusir.djb"))

          
        

(7)finditer -- 返回一個迭代器

          
            s = re.finditer("\w","alex:dsb#wusir.djb")   # 返回的就是一個迭代器
print(next(s).group())
print(next(s).group())
for i in s:
    print(i.group())

          
        

(8)search -- 給分組命名 ?P

          
            ret = re.search("<(?P
            
              \w+)>\w+","
              

hello

") ret = re.search("<(?P \w+)>(?P \w+)","

hello

") print(ret.group("tag_name")) print(ret.group("content"))

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品一区二区三区99 | 97国内精品久久久久久久影视 | 久久成人国产精品 | 国产精品98福利小视频 | 美日韩免费视频 | 国产成人91激情在线播放 | 特级做a爰片毛片免费看 | 黑人巨大精品 | 草草影院永久地址 | 欧美日韩在线观看中文字幕 | 特黄级 | 精品久久久久久久久久久久久久 | 亚洲欧美精品一区二区 | av在线试看 | 91视频网址| 中文字幕av一区二区 | 欧美国产中文 | 天天操天天射天天插 | 中文字幕av在线播放 | 国99久9在线 | 免费 | 最新日韩精品在线观看 | 艹逼 | 亚洲欧美日韩中文字幕久久 | 久草草视频在线观看免费高清 | 亚洲一区在线观 | 国产短视频精品区第一页 | 俄罗斯18videosex性 | 久久久av| 天天操夜夜操视频 | 亚洲国产精品综合久久网络 | 亚洲天天做日日做天天看2018 | 国产日韩一区 | 99热这里只有精品8 免费看搡女人的视频 | h久久 | 丁香花在线电影小说观看 | 亚洲免费一 | 日韩在线亚洲 | 国产精品九九久久99视频 | 侮辱丰满美丽的人妻 | 精品久久久久久无码中文字幕 | 亚洲一区二区三区四区 |