1. 程式人生 > >Python re模塊筆記

Python re模塊筆記

獲取 空格 dota cas 函數返回 start 成功 包括 正則表達式

\d 數字:[0-9]
\D 非數字:[^\d]
\s 匹配任何空白字符:[<空格>\t\r\n\f\v]
\S 非空白字符:[^\s]
\w 匹配包括下劃線在內的任何字字符:[A-Za-z_0-9]
\W 匹配非字母字符,即匹配特殊字符
\A 僅匹配字符串開頭,同^
\Z 僅匹配字符串結尾,同$
\b 單詞邊界 eg: 嚴格匹配abc \babc\b
(?P<name>) 分組,除了原有的編號外再指定一個額外的別名
(?P=name) 引用別名為<name>的分組匹配到字符串
re模塊中常用功能函數:
1、compile() 編譯正則表達式模式,返回一個對象的模式
格式:
re.compile(pattern,flags=0)
pattern: 編譯時用的表達式字符串。
flags 編譯標誌位,用於修改正則表達式的匹配方式
flags類型:
re.S(DOTALL) 使.匹配包括換行在內的所有字符
re.I(IGNORECASE)使匹配對大小寫不敏感
re.L(LOCALE)做本地化識別(locale-aware)匹配,法語等
re.M(MULTILINE) 多行匹配,影響^和$
re.X(VERBOSE) 該標誌通過給予更靈活的格式以便將正則表達式寫得更易於理解
re.U 根據Unicode字符集解析字符,這個標誌影響\w,\W,\b,\B
2、match() 決定RE是否在字符串剛開始的位置匹配
格式:
re.match(pattern, string, flags=0)
3、search()
格式:
re.search(pattern, string, flags=0)
re.search函數會在字符串內查找模式匹配,只要找到第一個匹配然後返回
match和search一旦匹配成功,就是一個match object對象,而match object對象有以下方法:
group() 返回被 RE 匹配的字符串
start() 返回匹配開始的位置
end() 返回匹配結束位置
span() 返回一個元組包含匹配 (開始,結束) 的位置
groups() 方法返回一個包含正則表達式中所有小組字符串的元組,從 1 到所含的小組號,通常groups()不需要參數,返回一個元組,元組中的元就是正則表達式中定義的組
print(re.search("([0-9])([a-z])([0-9])",a).group(3))
4、findall()
re.findall遍歷匹配,可以獲取字符串中所有匹配的字符串,返回一個列表
格式:
re.findall(pattern, string, flags=0)
5.finditer()
搜索string,返回一個順序訪問每一個匹配結果(Match對象)的叠代器。找到 RE 匹配的所有子串,並把它們作為一個叠代器返回
re.finditer(pattern, string, flags=0)
6、split()
按照能夠匹配的子串將string分割後返回列表
格式:
re.split(pattern, string[, maxsplit])
maxsplit用於指定最大分割次數,不指定將全部分割
7、sub()
使用re替換string中每一個匹配的子串後返回替換後的字符串
re.sub(pattern, repl, string, count)
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配
?,+?,??,{m,n}? 前面的*,+,?等都是貪婪匹配,也就是盡可能匹配,後面加?號使其變成惰性匹配

Python re模塊筆記