標籤: 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模塊函數 | |
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(pattern,repl,string,count=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 | 經過反斜線轉義,不然全部空格加上#(以及在該行中全部後續文字)都被忽略,除非在一個字符類中或者容許註釋而且提升可讀性 |