python正则表达式快速入门_Python学习笔记——正则表达式入门
標簽:
# 本文對正則知識不做詳細解釋,僅作入門級的正則知識目錄。
正則表達式的強大早有耳聞,大一時參加一次選拔考試,題目就是用做個HTML解析器,正則的優勢表現得淋漓盡致。題外話不多講,直接上干貨:
1. 元字符:
與之對應的還有反義字符,大部分為小寫字母變大寫,例如\D表示匹配非數字的字符。
2. 重復(即匹配變長的字符串):
元字符可匹配單一的字符類型,若想匹配長度未知或長度限定的字符串需要在后邊加上限定符。
3. 范圍與分組:
有時元字符并不能滿足匹配字符的需求,這時就需要[]來圈定匹配范圍,例如要匹配一個只帶有a,s,d,f的單詞,可以用\b[asdf]\b;正則里面還有小括號用來表示分組,比如你想重復某幾個字符,就可以使用分組,例如(\d.\d){1,3}表示匹配小括號里的重復內容一到三次。此外,小括號還可以用來后向引用等,此處不記。
4. 零寬斷言:
零寬斷言主要用來查找在某些斷言(指定內容)之前或之后的內容,例如(?=exp)匹配表達式exp前面出現的內容(不匹配exp),(?<=exp)匹配表達式exp后面出現的內容,還有負向零寬斷言等此處不記。
5. 貪婪與懶惰:
當正則表達式中包含能接受重復的限定符時,通常的行為是(在使整個表達式能得到匹配的前提下)匹配盡可能多的字符,即貪婪匹配。如表達式a.*b,搜索aabab的話,它會匹配整個字符串aabab。而懶惰匹配會匹配盡可能少的字符串,只需要在限定符后面加一個?,例如a.*?b會匹配aab(第一到第三個字符)和ab(第四到第五個字符)。
6. Python的re模塊:
python 提供re模塊,提供正則的所有功能。下面只記兩個方法和一個注意的地方。
6.1 match方法:
match()方法判斷是否匹配,如果匹配成功,返回一個Match對象,否則返回None。
1 >>> importre2 >>> re.match(r‘^\d{3}\-\d{3,8}$‘, ‘010-12345‘)3 <_sre.sre_match object at>
4 >>> re.match(r‘^\d{3}\-\d{3,8}$‘, ‘010 12345‘)5 >>>
如果正則表達式中定義了組,就可以在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轉義字符串也用\表示,所以正則表達式讀取時作為字符串出現時會被編譯器自動去掉轉移字符的\,正則使用時就會出錯,所以推薦使用python的 r 前綴。
ps:
本文是對正則表達式的學習總結,大部分知識來源于網上。下面給出兩個個人認為比較好的鏈接:
1.http://www.jb51.net/tools/zhengze.html 對正則表達式介紹的比較詳細,個人認為要想深入學習正則表達式還是買本書比較好。
2.http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832260566c26442c671fa489ebc6fe85badda25cd000 來自廖雪峰大神的教程,結合python一起講,只是稍微短了一點。
標簽:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python正则表达式快速入门_Python学习笔记——正则表达式入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以赚钱的手机游戏(中的备份和还原)
- 下一篇: css怎么设置边框阴影