python學習筆記----正則表達式

python學習筆記-正則表達式

標籤: pythonpython


特殊符號和字符

符號 描述 示例
literral 匹配文本的字面值literal foo
re1|re2 匹配正則表達式re1或re2 foo|bar
. 匹配任何字符(除了\n之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串終止部分 /bin/*sh$
* 匹配0次或者屢次前面出現的正則表達式 [A-Za-z0-9]*
+ 匹配1次或者屢次前面出現的正則表達式 [a-z]+\.com
? 匹配0次或1次前面出現的正則表達式 goo?
{N} 匹配N次前面出現的正則表達式 [0-9]{3}
{M,N} 匹配M~N次前面出現的正則表達式 [0-9]{5,9}
[...] 匹配來自字符集的任意單一字符 [aeiou]
[..x-y..] 匹配x-y範圍中的任意單一字符 [0-9],[A-Za-z]
[^...] 不匹配此字符集中出現的任何一個字符,包括每一範圍的字符(若是則此字符集中出現) [^aeiou],[^A-Za-z0-9]
(*|+|?|{})? 用於匹配上面頻繁出現、重複出現符號的非貪婪版本(*、+、?、{}) .*?[a-z]
(...) 匹配封閉的正則表達式,而後另存爲子組 ([0-9]{3})?,f(oo|)bar
\d 匹配任何十進制數字,與[0-9]一致(\D與\d相反,不匹配任何非數值型的數字) data\d+.txt
\w 匹配任何字母數字字符,與[A-Za-z0-9]相同(\W與之相反) [A-Za-z]w+
\s 匹配任何空格字符,與[\n\t\r\v\f]相同(\S與之相反) of\sthe
\b 匹配任何單詞邊界(\B與之相反) \bThe\b
\N 匹配已保存的子組N(參見上面的(...)) price:\16
\c 逐字匹配任何特殊字符c(即,僅按照字面意義匹配,不匹配特殊含義) \.\\,\*
\A(\Z) 匹配字符串的起始(結束)(另見扇面介紹的^和$) \ADear
擴展表示法
(?iLmsux) 在正則表達式中嵌入一個或者多個特殊「標記」參數(或者經過函數/方法) (?x),(? im)
(?:...) 表示一個匹配不用保存的分組 (?:\w+\.)*
(?P<name>...) 向一個僅由name標識而不是數字ID標識的正則分組分配 (?P<data>)
()?P=name 在同一字符串中匹配由(?P=name)分組的以前文本 (?P=data)
(?#...) 表示註釋,雖有內容都被忽略 (?#comment)
(?=...) 匹配條件是若是...出如今以後的位置,而不使用輸入字符串;稱做正向前視斷言 (?=.com)
(?!...) 匹配條件是若是...不出如今以後的位置,而不使用輸入字符串;稱做負向前視斷言
(?<=...) 匹配條件是若是...出如今以前的位置,而不使用輸入字符串;稱做正向後視斷言
(?<!...) 匹配條件是若是...不出如今以前的位置,而不使用輸入字符串;稱做負向後視斷言
(?(id/name)Y/N) 若是分組所提供id或者name(名稱)存在就返回正則表達式的條件匹配Y,若是不存在,就返回N;|N是可選項 (?(1)y|x)

re模塊:核心函數和方法

函數/方法 描述
僅僅是re模塊函數
compile(pattern,flags=0) 使用任何可選的標記來編譯正則表達式的模式,而後返回一個正則表達式對象
re模塊函數和正則表達式對象的方法
match(pattern,string,flags=0) 嘗試使用帶有可選的標記的正則表達式的模式來匹配字符串。若是匹配成功,就返回匹配對象;若是失敗,就返回None
search(pattern,string,flags=0) 使用可選標記搜索字符串中第一次出現的正則表達式模式。若是匹配成功,就返回匹配對象;若是失敗,就返回None
findall(pattern,string[,flags]) 查找字符串中全部(非重複)出現的正則表達式模式,並返回一個匹配列表
finditer(pattern,string[,flags]) 與findall函數相同,但返回的不是一個列表,而是一個迭代器。對於每一次匹配,迭代器都返回一個匹配對象
split(pattern,string,nax=0) 根據正則表達式的模式分隔符,split函數將字符串分割爲列表,而後返回成功匹配的列表,分割最多操做max次(默認分割全部匹配成功的位置)
re 模塊函數和正則表達式對象方法
sub(patternreplstringcount=0 使用repl替換全部正則表達式的模式在字符串中出現的位置,除非定義count,不然就將替換全部出現的位置(另見subn()函數,該函數返回替換操做的數目)
purge() 清除隱式編譯的正則表達式模式
經常使用的匹配對象方法(查看文檔以獲取更多信息)
group(num=0) 返回整個匹配對象,或者編號爲num的特定子組
groups(default=None) 返回一個包含全部匹配子組的元組(若是沒有成功匹配,則返回一個空元組)
groupdict(default=None) 返回一個包含全部匹配的命名子組的字典,全部的子組名稱做爲字典的鍵(若是沒有成功匹配,則返回一個空字典)
經常使用的模塊屬性(用於大多數正則表達式函數的標記)
re.I、re.IGNORECASE 不區分大小寫的匹配
re.L、re.LOCALE 根據所使用的本地語言環境經過\w、\W、\b、\B、\s、\S實現匹配
re.M、re.MULTILINE ^和&分別匹配目標字符串行的起始和結尾,而不是嚴格匹配整個字符串自己的起始和結尾
re.S、re.DOTALL 「.」(點號)一般匹配除了\n(換行符)以外的全部單個字符;該標記表示「.」(點號)可以匹配所有字符
re.X、re.VERBOSE 經過反斜線轉義,不然全部空格加上#(以及在該行中全部後續文字)都被忽略,除非在一個字符類中或者容許註釋而且提升可讀性
相關文章
相關標籤/搜索