1. 程式人生 > >Python2.7-re模塊

Python2.7-re模塊

語法 python2.7 fin flags esc 特殊符號 ocs erb 方法

re模塊

1、正則表達式的語法

‘.‘ 匹配任意字符,若指定了re.S,則可以匹配換行符
‘^‘ 匹配行首,即字符串的開頭,若指定了re.M,會自動匹配每行開頭
‘$‘ 匹配行尾,同上
‘*‘ 匹配大於等於0個的re
‘+‘ 匹配大於等於1個的re
‘?‘ 匹配0個或1個的re,此外?是非貪婪匹配的標誌
{m} 指定re的個數剛好為m個
{m,n} 指定re的個數在m,n之間
[] 可以在其中指定字符集,其中特殊符號也會被視作是普通字符,‘^‘為除字符集以外的字符
‘|‘ 或符號,匹配任意一個
(‘...‘) 若匹配到括號內的re,將其視為一個組,存在內存中
(?:‘...‘) 將匹配到的組不存在內存中
(?iLmsux) 指定匹配方法
(?P<name>‘...‘) 指定匹配的組的名稱
(?#‘...‘) 忽略指定的字符
(?=‘...‘) 如果指定的字符在匹配到的字符後面,才算匹配成功,例如:Isaac (?=Asimov) will match ‘Isaac ‘ only if it’s followed by ‘Asimov‘
(?!‘...‘) 與上面的相反,只有指定字符不在後面才匹配
(?<=‘...‘) 指定字符在前面才匹配
(?<!‘...‘) 指定字符不在前面才匹配
\number
\b 匹配空字符串,僅在詞的開頭和結尾
\B 與b相反
\d 匹配數字
\D d的補集
\s 匹配空格
\S s的補集
\w 匹配字母,數字,下劃線
\W w的補集

2、模塊內容(常數,方法)

re.compile(pattern, flags=0) 預編譯正則表達式
re.I/re.IGNORECASE 忽略大小寫
re.L/re.LOCALE 使\w,\W,\b,\B,\s,\S根據當前作用域來判斷
re.M/re.MULTILINE 匹配多行
re.S/re.DOTALL ‘.‘匹配換行
re.U/re.UNICODE 匹配unicode字符集
re.X/re.VERBOSE 可以將正則寫在多行中,並用#註釋
re.search(pattern, string, flags=0) 搜索string中第一個匹配的部分
re.match(pattern, string, flags=0) 只從第一個字符開始匹配,若第一個不符合,就返回none
re.split(pattern, string, maxsplit=0, flags=0) 用pattern分割字符串,返回分割後的列表,若pattern以捕獲組形式,則返回包括pattern的所有字符的列表
re.findall(pattern, string, flags=0) 找到所有符合條件的部分
re.finditer(pattern, string, flags=0)) 以叠代器形式返回所有匹配的部分,類型為MatchObject
re.sub(pattern, repl, string, count=0, flags=0) 執行count次repl替換string中匹配pattern的部分
re.subn(pattern, repl, string, count=0, flags=0) 同上,只是返回結果為新字符串和替換次數的元組
re.escape(pattern) 將pattern中的特殊符號加上轉義符
re.purge() 清空正則表達式的緩存

3、MatchObject類

常用方法:group(),groups(),groupdict()包含匹配結果的組,start(),end()匹配結果的組的下標,span()返回start和end的元組
常見屬性:lastindex,lastgroup,re,string

Python2.7-re模塊