在Python中re模塊用於對正則表達式(regular expression)的支持。
正則表達式是可以匹配文本片段的模式。
一、正則表達式的書寫:
1、通配符:點( . )可以匹配任何字符(除了換行符)。如:'.ike' 可以匹配 ’bike‘;’like‘等
2、對特殊字符進行轉義:在正則表達式中如果是引用特殊字符作爲普通字符有可能會出現問題。如 ‘python.org'可能會被匹配成 ‘Pythonaorg’
解決方法:(1)用轉義符。 如上例:‘python\\.org' (兩個\\是進行了解釋器轉義——re模塊轉義。兩個轉義)。
(2)用原始字符串。 r’python\.org‘ 。
3、字符集:使用中括號 [ ] 擴住字符串來創建字符集。 [bl]ike可以匹配bike 、like。[a-zA-Z0-9]可以匹配任意大小寫字母和數字
在開頭加上 ^ 可以反轉字符集。[^qwe]可以匹配除q w e以外的字符。
(注:在字符集中對. * ?等字符進行轉義通常沒有必要。記住:1、如果 ^ 字符在字符集開頭要進行轉義(希望^作爲普通字符串2、 ] 或 -最好放在字符集開頭)
4、選擇符和子模式:管道符號 | 。如:只想匹配ipad 和 iPhone——iPad | iPhone。
子模式:有時候不需要對整個模式使用選擇運算符。使用圓括號括起需要的部分。如:iP(ad | hone)。
5.可選項和重複子模式:在子模式後面加上問號就變成可選項了。 如:r'(http://)?(www.)?python\.org
(pattern)*:允許模式重複0次或多次。
(pattern)+:允許模式重複1次或多次。
(pattern){m,n}:允許模式重複m~n次。
?表示子模式只能出現一次或不出現。
6、字符串的開始和結尾:只想在字符串開頭而不是其他位置匹配’ht+p‘,就用 ^ 標記開始。similarly,字符串結尾用$標識。
二、re庫的內容:
re.compile將正則表達式轉換爲模式對象。使用compile完成一次轉化後。每次使用模式就不用進行轉換了。re.search(pat,string) == pat.search(string)
re.search 在給定字符串中尋找第一個匹配給正則表達式的子字符串。一旦找到string就會返回True否則返回False
re.match會在給定字符串開頭匹配正則表達式。如 match('p','people') 返回True re.match('p','www.python.org')返回False
re.split根據模式的匹配項分割字符串。maxsplit參數表示字符串最多可以分割的次數。
re.findall以列表形式返回給定模式的所有匹配項
re.sub:使用給定替換內容將匹配模式的子字符串替換掉
re.escape對字符串中所有可能被解釋成正則運算符的字符驚醒轉義的應用函數
三、組:
組就是放置在圓括號內的子模式,組的序號取決於它左側的括號數。組0就是整個模式
re匹配對象的一些重要方法:
group方法返回模式中與給定組匹配的字符串
start返回給定組的匹配項的開始索引
end返回結束索引
span以元組的形式返回(start,end)