正則表示式(re)
阿新 • • 發佈:2018-11-04
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)