Python 正則使用

單字修飾符:
1. . 匹配任意字符,除了換行符
2. [] 用來表示一組字符,單獨列出:[abc] 匹配 ‘a’,‘b’或’c’
3. \d 匹配任意數字,等價於 [0-9].
4. \D 匹配任意非數字
5. \w 匹配字母數字及下劃線
6. \W 匹配非字母數字及下劃線
7. \s 匹配任意空白字符,等價於 [\t\n\r\f].
8. \S 匹配任意非空字符

數量修飾符
1.* 匹配0個或多個的表達式
2.+ 匹配1個或多個的表達式
3.? 匹配0個或1個由前面的正則表達式定義的片段
4.{m} 前面字符出現m次
5.{m,} 前面字符出現至少m次
6.{m,n}前面字符出現m~n次


邊界修飾符
1.^ 以…開始
2.$ 以…結尾
eg:
‘^abc’ 匹配以abc開頭
‘abc$’ 匹配以abc結尾


分組修飾符
1.() 匹配括號內的表達式,也表示一個組
2.\1 \2 匹配第1、2個分組的內容
eg:

.*:(.*)
    	\1  \2

貪婪模式非貪婪模式
貪婪模式:在整個表達式匹配成功的前提下,儘可能多的匹配 ( * );
非貪婪模式:在整個表達式匹配成功的前提下,儘可能少的匹配 ( ? );
Python裏數量詞默認是貪婪的。
示例一 : 源字符串:abbbc
使用貪婪的數量詞的正則表達式 ab* ,匹配結果: abbb。
* 決定了儘可能多匹配 b,所以a後面所有的 b 都出現了。
使用非貪婪的數量詞的正則表達式ab*?,匹配結果: a。
即使前面有 *,但是 ? 決定了儘可能少匹配 b,所以沒有 b。

      示例二 : 源字符串:aa<div>test1</div>bb<div>test2</div>cc
      使用貪婪的數量詞的正則表達式:<div>.*</div>
      
      匹配結果:<div>test1</div>bb<div>test2</div>
      這裏採用的是貪婪模式。在匹配到第一個“</div>”時已經可以使整個表達
      式匹配成功,但是由於採用的是貪婪模式,所以仍然要向右嘗試匹配,
      查看是否還有更長的可以成功匹配的子串。匹配到第二個“</div>”後,
      向右再沒有可以成功匹配的子串,匹配結束,匹配結果爲
      “<div>test1</div>bb<div>test2</div>”

      使用非貪婪的數量詞的正則表達式:<div>.*?</div>
      匹配結果:<div>test1</div>
      正則表達式二採用的是非貪婪模式,在匹配到第一個“</div>”
      時使整個表達式匹配成功,由於採用的是非貪婪模式,
      所以結束匹配,不再向右嘗試,匹配結果爲“<div>test1</div>”。

模式修飾符
regular expression
1.re.S 單行模式
2.re.M 多行模式
3.re.I 忽略大小寫

使用步驟:
re.complie()
compile 函數用於編譯正則表達式,生成一個正則表達式Pattern對象
Pattern對象 = re.compile(正則表達式)
Pattern對象.find all(html)
findall()
在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章