亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python基礎學習筆記(十三)

系統 1641 0

python基礎學習筆記(十三)

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

?

?

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

?

什么是正則表達式

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

?

**? 通配符

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

?

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

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

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

?

**? 字符集

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

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

?

**? 選擇符

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

?

**? 子模式

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

?

**? 可選項

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

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 模塊中一些重要的函數:

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

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

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

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

print?‘found?it?!’

?

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

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

                >>> 
                
                  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? 函數,可以對字符串中所有可能被解釋為正則運算符的字符進行轉義的應用函數。

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

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

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

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

?

?

?

匹配對象和組

?

簡單來說,組就是放置在圓括號里內的子模塊,組的序號取決于它左側的括號數。組 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沒意思的基礎終于學完了。雖然學的不扎實,但大體有了個印象;后面的將會非常有意思,讀取文件,編寫圖形窗口,連接數據庫,web編程....

?

?

?


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩a一级欧美一级在线播放 | www.四虎网站 | 一级一级18女人毛片 | 欧美一区二区三区在线 | 精品理论片一区二区三区 | 亚洲精品久久久久影院 | 色哥网站| 99热最新网站 | 精品欧美一区二区三区精品久久 | 亚洲欧美精品天堂久久综合一区 | 日韩成人精品 | 4虎影院在线观看 | 狠狠亚洲丁香综合久久 | 在线视频亚洲一区 | 亚洲一区二区日韩欧美gif | 亚洲欧美成人网 | 亚洲视频www | 一区二区三区在线视频观看 | 国产精品爱啪在线线免费观看 | 日韩欧美精品在线视频 | 九九免费观看全部免费视频 | 精品一区二区三区在线视频观看 | 一区二区在线精品免费视频 | 看黄网站在线观看 | 深夜影院在线 | 国产成人亚洲综合无 | 激情综合五月婷婷 | 国产一区二区三区久久 | 精品1区2区3区 | 日韩国产在线 | 亚洲另类伦春色综合妖色成人网 | 国产成人女人视频在线观看 | 99亚洲精品高清一二区 | 久久免费国产精品一区二区 | 奇米影视111 | 黄毛片 | 欧美色无极 | 日韩 在线视频精品 | 最新国产三级久久 | 欧美成人xx免费视频 | 亚洲国产精品自产拍在线播放 |