Python學習筆記——Regex入門,python學習筆記

來源:互聯網
上載者:User

Python學習筆記——Regex入門,python學習筆記

# 本文對正則知識不做詳細解釋,僅作入門級的正則知識目錄。

 

  Regex的強大早有耳聞,大一時參加一次選拔考試,題目就是用做個HTML解析器,正則的優勢表現得淋漓盡致。題外話不多講,直接上乾貨:

1. 元字元:

   

  與之對應的還有反義字元,大部分為小寫字母變大寫,例如\D表示匹配非數位字元。

2. 重複(即匹配變長的字串):

  元字元可匹配單一的字元類型,若想匹配長度未知或長度限定的字串需要在後邊加上限定符。

  

3. 範圍與分組:

  有時元字元並不能滿足匹配字元的需求,這時就需要[]來圈定匹配範圍,例如要匹配一個只帶有a,s,d,f的單詞,可以用\b[asdf]\b;正則裡面還有小括弧用來表示分組,比如你想重複某幾個字元,就可以使用分組,例如(\d.\d){1,3}表示匹配小括弧裡的重複內容一到三次。此外,小括弧還可以用來後向引用等,此處不記。

4. 零寬斷言:

  零寬斷言主要用來尋找在某些斷言(指定內容)之前或之後的內容,例如(?=exp)匹配運算式exp前面出現的內容(不匹配exp),(?<=exp)匹配運算式exp後面出現的內容,還有負向零寬斷言等此處不記。

5. 貪婪與懶惰:

  當Regex中包含能接受重複的限定符時,通常的行為是(在使整個運算式能得到匹配的前提下)匹配儘可能多的字元,即貪婪匹配。如運算式a.*b,搜尋aabab的話,它會匹配整個字串aabab。而懶惰匹配會匹配儘可能少的字串,只需要在限定符後面加一個?,例如a.*?b會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。

6. Python的re模組:

  python 提供re模組,提供正則的所有功能。下面只記兩個方法和一個注意的地方。

  6.1 match方法:

    match()方法判斷是否匹配,如果匹配成功,返回一個Match對象,否則返回None

1 >>> import re2 >>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')3 <_sre.SRE_Match object at 0x1026e18b8>4 >>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')5 >>>

    如果Regex中定義了組,就可以在Match對象上用group()方法提取出子串來。注意到group(0)永遠是原始字串,group(1)group(2)……表示第1、2、……個子串。使用groups()方法還可以得到所有子串。

  6.2 split方法:

    split()方法可切分子串,如下:

1 >>> re.split(r'[\s\,\;]+', 'a,b;; c  d')2 ['a', 'b', 'c', 'd']

  6.3 關於逸出字元:

    python逸出字元串也用\表示,所以Regex讀取時作為字串出現時會被編譯器自動去掉轉移字元的\,正則使用時就會出錯,所以推薦使用python的 r 首碼。

ps:

  本文是對Regex的學習總結,大部分知識來源於網上。下面給出兩個個人認為比較好的連結:

  1.http://www.jb51.net/tools/zhengze.html 對Regex介紹的比較詳細,個人認為要想深入學習Regex還是買本書比較好。

  2.http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832260566c26442c671fa489ebc6fe85badda25cd000 來自廖雪峰大神的教程,結合python一起講,只是稍微短了一點。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.