1. 程式人生 > >正則表示式(re)

正則表示式(re)


1、re.match(pattern, str, flag) 從str的第一個字母開始匹配,若不是開頭的,儘管屬於str內,則無法匹配。

2、貪婪匹配與非貪婪匹配(?)

貪婪匹配:嘗試匹配儘可能多的字元
>>> sentence = """You said "why?" and I say "I don't know"."""
>>> re.findall(r'"(.*)"', sentence) 
['why?" and I say "I don\'t know']
本意是選出人物所說的話,但是卻由於“貪婪”特性,出現了匹配不當
非貪婪匹配:嘗試匹配儘可能**少**的字元
>>> sentence = """You said "why?" and I say "I don't know"."""
>>> re.findall(r'"(.*?)"', sentence)
['why?', "I don't know"]

3、re.search() 掃描整個字串並返回第一個成功的

4、re.sub() 替換字串

5、re.compile()是將正則字串編譯成正則表示式物件,便於複用該匹配模式
6、re.S 多行匹配(換行)
7、re.findall(pattern, html) 從html中返回所有符合的pattern正則的結果

pattern = re.compile('<li.*?title="(.*?)".*?href="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>', re.S)
results = re.findall(pattern, html)