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

python基礎學習筆記(十三)

系統(tǒng) 1719 0

python基礎學習筆記(十三)

2013-05-20 23:10 ?蟲師 閱讀( ... ) 評論( ... ) 編輯 收藏

?

?

re 模塊包含對?正則表達式。本章會對 re 模塊主要特征和正則表達式進行介紹。

?

什么是正則表達式

正則表達式是可以匹配文本片段的模式。最簡單的正則表達式就是普通字符串,可以匹配其自身。換包話說,正則表達式 python ?可以匹配字符串 python ?。你可以用這種匹配行為搜索文本中的模式,并且用計算后有值并發(fā)特定模式,或都將文本進行分段。

?

**? 通配符

正則表達式可以匹配多于一個的字符串,你可以使用一些特殊字符創(chuàng)建這類模式。比如點號( . )可以匹配任何字符。在我們用 window? 搜索時用問號(?)匹配任意一位字符,作用是一樣的。那么這類符號就叫?通配符。

?

**? 對特殊字符進行轉義

通過上面的方法,假如我們要匹配“ python.org ”,直接用用‘ python.org ’可以么?這么做可以,但這樣也會匹配“ pythonzorg ”,這可不是所期望的結果。

好吧!我們需要對它進行轉義,可以在它前面加上發(fā)斜線。因此,本例中可以使用“ python\\.org ”,這樣就只會匹配“ python.org ”了。

?

**? 字符集

我們可以使用中括號( [?] )括住字符串來創(chuàng)建字符集??梢允褂梅秶?,比如‘ [a-z] ’能夠匹配 a z 的任意一個字符,還可以通過一個接一個的方式將范圍聯(lián)合起來使用,比如‘ [a-zA-Z0-9] ’能夠匹配任意大小寫字母和數(shù)字。

反轉字符集,可以在開頭使用 ^ 字符,比如‘ [^abc] ’可以匹配任何除了 a 、 b 、 c 之外的字符。

?

**? 選擇符

有時候只想匹配字符串 python ?和? perl ??,可以使用選擇項的特殊字符:管道符號( | )?。因此,?所需模式可以寫成 python|perl ?。

?

**? 子模式

但是,有些時候不需要對整個模式使用選擇符 --- 只是模式的一部分。這時可以使用圓括號起需要的部分,或稱子模式。?前例可以寫成? p(ython?|?erl)

?

**? 可選項

在子模式后面加上問號,它就變成了可選項。它可能出現(xiàn)在匹配字符串,但并非必須的。

r (heep://)?(www\.)?python\.org

只能匹配下列字符:

http://www.python.org

http://python.org

www.python.org

python.org

?

**  重復子模式

(pattern)*?:? 允許模式重復 0 次或多次

(pattern)+?:? 允許模式重復 1 次或多次

(pattern){m,n}?:? 允許模式重復 m~?n?

例如:

r w?*?\.python\.org ??匹配? www.python.org ?、 .python.org ?、 wwwwwww.python.org

r w?+?\.python\.org ??匹配? w.python.org ?;但不能匹配? .python.org ?

r w?{3,4}\.python\.org ??只能匹配 www.python.org ?和 wwww.python.org ?

?

re 模塊的內容

?

re 模塊中一些重要的函數(shù):

python基礎學習筆記(十三)_第1張圖片

  re.compile? 將正則表達式轉換為模式對象,可以實現(xiàn)更有效率的匹配。

  re.search? 會在給定字符串中尋找第一個匹配給正則表式的子字符串。找到函數(shù)返回 MatchObject( 值為 True) ,否則返回 None( 值為 False)? 。因為返回值的性質,所以該函數(shù)可以用在條件語句中:

if?re.serch(pat,?string):

print?‘found?it?!’

?

  re.math? 會在給定字符串的開頭匹配正則表達式。因此, re.math( p ?,? python ) 返回真, re.math( p ?,? www.python )? 則返回假。

  re.split? 會根據(jù)模式的匹配項來分割字符串。

                >>> 
                
                  import
                
                
                   re

                
                >>> some_text = 
                
                  '
                
                
                  alpha , beta ,,,gamma delta 
                
                
                  '
                
                
>>> re.split(
                
                  '
                
                
                  [,]+
                
                
                  '
                
                
                  ,some_text)
[
                
                
                  '
                
                
                  alpha 
                
                
                  '
                
                , 
                
                  '
                
                
                   beta 
                
                
                  '
                
                , 
                
                  '
                
                
                  gamma delta 
                
                
                  '
                
                ]
              

?

  re.?findall 以列表形式返回給定模式的所有匹配項。比如,要在字符串中查找所有單詞,可以像下面這么做:

                >>> 
                
                  import
                
                
                   re

                
                >>> pat = 
                
                  '
                
                
                  [a-zA-Z]+
                
                
                  '
                
                
>>> text = 
                
                  '
                
                
                  "Hm...err -- are you sure?" he said, sounding insecure.
                
                
                  '
                
                
>>>
                
                   re.findall(pat,text)
[
                
                
                  '
                
                
                  Hm
                
                
                  '
                
                , 
                
                  '
                
                
                  err
                
                
                  '
                
                , 
                
                  '
                
                
                  are
                
                
                  '
                
                , 
                
                  '
                
                
                  you
                
                
                  '
                
                , 
                
                  '
                
                
                  sure
                
                
                  '
                
                , 
                
                  '
                
                
                  he
                
                
                  '
                
                , 
                
                  '
                
                
                  said
                
                
                  '
                
                , 
                
                  '
                
                
                  sounding
                
                
                  '
                
                , 
                
                  '
                
                
                  insecure
                
                
                  '
                
                ]
              

?

  re.sub 的作用在于:使用給定的替換內容將匹配模式的子符串(最左端并且重疊子字符串)替換掉。

                >>> 
                
                  import
                
                
                   re

                
                >>> pat = 
                
                  '
                
                
                  {name}
                
                
                  '
                
                
>>> text = 
                
                  '
                
                
                  Dear {name}...
                
                
                  '
                
                
>>> re.sub(pat, 
                
                  '
                
                
                  Mr. Gumby
                
                
                  '
                
                
                  ,text)

                
                
                  '
                
                
                  Dear Mr. Gumby...
                
                
                  '
                
              

?

  re.escape? 函數(shù),可以對字符串中所有可能被解釋為正則運算符的字符進行轉義的應用函數(shù)。

如果字符串很長且包含很多特殊字符,而你又不想輸入一大堆反斜線,可以使用這個函數(shù):

                >>> re.escape(
                
                  '
                
                
                  www.python.org
                
                
                  '
                
                
                  )

                
                
                  '
                
                
                  www\\.python\\.org
                
                
                  '
                
                
>>> re.escape(
                
                  '
                
                
                  but where is the ambiguity?
                
                
                  '
                
                
                  )

                
                
                  '
                
                
                  but\\ where\\ is\\ the\\ ambiguity\\?
                
                
                  '
                
              

?

?

?

匹配對象和組

?

簡單來說,組就是放置在圓括號里內的子模塊,組的序號取決于它左側的括號數(shù)。組 0 就是整個模塊,所以在下面的模式中:

‘There??(was?a?(wee)?(cooper))?who?(lived?in?Fyfe)’

包含組有:

0??There??was?a??wee?cooper??who??lived?in?Fyfe

1??was?a??wee??cooper

2??wee

3??cooper

4??lived?in?Fyfe

?

re? 匹配對象的重要方法

python基礎學習筆記(十三)_第2張圖片

下面看實例:

                >>> 
                
                  import
                
                
                   re

                
                >>> m = re.match(r
                
                  '
                
                
                  www\.(.*)\..{3}
                
                
                  '
                
                ,
                
                  '
                
                
                  www.python.org
                
                
                  '
                
                
                  )

                
                >>>
                
                   m.group()

                
                
                  '
                
                
                  www.python.org
                
                
                  '
                
                
>>>
                
                   m.group(0)

                
                
                  '
                
                
                  www.python.org
                
                
                  '
                
                
>>> m.group(1
                
                  )

                
                
                  '
                
                
                  python
                
                
                  '
                
                
>>> m.start(1
                
                  )

                
                4
>>> m.end(1
                
                  )

                
                10
>>> m.span(1
                
                  )
(
                
                4, 10)
              

  group 方法返回模式中與給定組匹配的字符串,如果沒有組號,默認為 0? ;如上面: m.group()==m.group(0)?;如果給定一個組號,會返回單個字符串。

  start? 方法返回給定組匹配項的開始索引,

  end 方法返回給定組匹配項的結束索引加 1 ;

  span 以元組( start , end )的形式返回給組的開始和結束位置的索引。

?

----------------------------

正則表達式應該是不容易理解的一個知識點;python沒意思的基礎終于學完了。雖然學的不扎實,但大體有了個印象;后面的將會非常有意思,讀取文件,編寫圖形窗口,連接數(shù)據(jù)庫,web編程....

?

?

?


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产路线1路线2路线 | 91av视频在线免费观看 | pornoⅹxxxxhd麻豆 | 青娱乐免费 | 成人在线免费看 | 亚洲欧美中文日韩在线 | 99热久久这里只有精品首页 | 91精品国产综合久久久久蜜臀 | 婷婷久久爱www | 国产噜噜噜 | 国产在线激情 | 欧美日韩精品久久久免费观看 | 欧美操操操 | www.夜夜骑 | 性欧美xxxx精品xxxxrb | 亚洲AV久久久久久久无码 | 欧美精品一区二区三区在线 | 免费午夜不卡毛片 | 久久精品国产精品青草图片 | 大片毛片| 久在线 | 四虎影院在线 | 91精品国产综合久久久久久丝袜 | 亚洲综合综合在线 | 黄网在线 | 日本在线观看不卡 | 国产精品久久久久久久久 | 欧美精品免费线视频观看视频 | 精品久久洲久久久久护士 | 羞羞的视频在线 | 久久免费看少妇高潮A片JA小说 | 免费99视频 | 成人18视频在线 | 小凤仙的故事 电视剧 | 成年人xxxx | 99久久精品国产一区二区三区 | 色综合久久婷婷天天 | 久久成人一区 | 毛片免费看电影 | 色噜 | 全黄裸片武则天一级第4季 亚洲一区国产 |