欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 91福利视频合集 | 久久综合九色综合97婷婷群聊 | 综合色久 | 午夜精品一区 | 国产成人综合网在线观看 | 亚洲日本在线观看视频 | 亚洲视频在线一区 | 久热国产精品视频 | 日韩中文字幕免费在线观看 | 亚洲黄色在线视频 | 欧美精品一区二区免费 | 国产精品第一国产精品 | 成a人v在线观看视频 | 亚洲视频在线观看 | 99热这里只有精品8 免费看搡女人的视频 | 波多野结衣家教老师 | 欧美一级片手机在线观看 | 免费av在线播放 | 国内精品久久久久激情影院 | 那格格| youjizz欧美 | 免费中文字幕日韩欧美 | 日本高清色惰www在线视频 | 女人被狂躁视频免费网站 | 亚洲欧美日韩中文综合在线不卡 | 色综合区 | 中国大陆高清aⅴ毛片 | 亚洲在线观看免费视频 | xnxx 日本19| 午夜寂寞影视在线观看 | 亚洲精品免费观看 | 久久97久久97精品免视看 | 亚洲精品一区久久狠狠欧美 | 91中文字幕在线一区 | 免费一级片在线观看 | 少妇的肉体的满足毛片 | 亚洲国产精品综合久久 | 日日碰狠狠添天天爽五月婷 | 91精品电影 | 美女久久久| 草草影院浮力 |