1. 程式人生 > >[ Python ] 正則表達式(1)

[ Python ] 正則表達式(1)

solid lnp 額外 spl 字符 正則 -s bject 正則表達

[ Python ] 正則表達式(1)

概念區分:搜索 ( Search ) 和 匹配 ( Match )

from re import search, match
search("nana", "banana") # Search succeeds!
search("bana", "banana") # Search succeeds!
match("nana", "banana")  # Match fail, returns None.
match("bana", "banana")  # Match succeeds!
  • 解釋:在 Python 中,完成模式匹配(Patten-Matching)有兩種方法,即這裏的搜索和匹配。搜索指的是在字符串任意部分中搜索匹配的模式,匹配指的是判斷一個字符串能否從起始處全部或者部分的匹配某個模式

正則表達式對象的編譯

  • 使用re.compile(patten, flags=0)函數可以將一個模式串編譯為正則表達式對象,編譯過程不會重復執行,而re模塊在底層匹配時總是生成正則表達式對象,預編譯有利於加速程序運行速度
  • re模塊對編譯過的對象采用編譯過的方法,但它和處理未編譯的字串的函數是同名的,因此從代碼文本上可以用同樣的方式來做模式匹配

匹配對象的處理

  • 正則表達式的處理一般還涉及到另一個對象類型:匹配對象。它可能是matchsearch方法的結果,看起來像這樣
import re
p = re.match("bana", "banana")
print(p) # <_sre.SRE_Match object; span=(0, 4), match=‘bana‘>
  • 對於這個對象,有兩個常用的處理方法:groupgroups
  • group函數在不傳遞額外參數時返回整個匹配對象,或者根據傳遞的參數返回指定的匹配子組
  • groups函數返回一個包含所有匹配子組的元組
  • 所謂的匹配子組,即是在正則表達式中用圓括號括起來的一段,具體例子如下
import re
m = re.match(‘(\w\w\w)-(\d\d\d)‘, ‘abc-123‘)
m.group()  # ‘abc-123‘
m.group(0) # ‘abc-123‘
m.group(1) # ‘abc‘
m.group(2) # ‘123‘
m.groups() # (‘abc‘, ‘123‘)
?

[ Python ] 正則表達式(1)