1、正則表達式語法
正則表達式可以指定一個模式,來匹配對應的字符串。
特殊字符要麼表示某個類別的普通字符,要麼影響它們周圍的正則表達式如何解釋。正則表達式的模式字符串不可以包含空字節,但可以使用\number符號指定空字節,例如
'\x00'。
特殊字符有:
”." 在默認模式下,匹配除換行以外的任意字符。如果 re.DOTALL 標志被指定,則匹配換行符在內的任意字符。
“^"在默認模式下,匹配字符串的起始位置。在 re.MULTILINE 標志被指定,也匹配換行符之後的字符。如正則表達式'^py'匹配字符串‘py88py’只能得到一個'py'
“$”在默認模式下,匹配字符串的末尾。在 re.MULTILINE 標志被指定,也匹配換行符之前的位置。
“*”匹配零次或多次前導的模式字符串,盡可能多的匹配。 ‘ab*’可以匹配‘a' 'ab' 'abb……(盡可能多匹配)'
“+”匹配一個或多個前導的模式字符串,盡可能多的匹配。 ’ab+’可以匹配‘ab’ 'abbb……'盡可能多
“?”匹配零個個或多個前導的模式字符串。 ‘ab?’可以匹配‘a’ 'ab'
“*?”“+?”“??”限定符是貪婪的,它們匹配盡可能多的文本。在限定符之後加上?將使得匹配以非貪婪或最小的方式進行。
“{m}”表示精確匹配前面的正則表達式m個拷貝,較少的匹配將導致整個表達式不能匹配。例如,a{6}將精確匹配6個‘a’字符,否則將不能匹配。
"{m,n}"生成的正則表達式匹配前導正則表達式的m到n個重復,嘗試匹配盡可能多的重復。例如,a{3,5}將匹配3到5個字符a.省略m表示下界為0,省略n表示上界無窮大。
“{m,n}?” 對於6個字符的字符串'aaaaaa',a{3,5}將匹配5個a,a{3,5}?將匹配3個a。
“\” 對任意特殊字符進行轉義,允許匹配字符‘*’ '?' 等
“[]” 用來表示一個字符的集合,在一個集合中:
• 字符可以一個一個列出來,例如[amk]可以匹配字符 ‘a’ 'm' 'k'
• 通過給出的兩個字符並用‘-’分隔,可以給出一段范圍的字符,例如‘[a-z]’將匹配‘a’到'z'的任意一個字符。如果‘-’被轉義,或是‘a-’或‘-a’ 將匹配單一的‘-’字符
• 在集合內部,特殊字符將失去他們的特殊含義。例如,[(*+]將匹配字符字面值 ‘(’ '*' '+'
• 在集合中還接受字符類別,例如\w或\s,盡管他們匹配的字符取決於 re.LOCAL 或者 re.UNICODE模式是否強制。
• 不再一段范圍內的字符可以通過補集匹配。如果集合的第一個字符是‘^’,那麼所有不在集合中的字符將被匹配。如果‘^’不是集合中的第一個字符則沒有特殊含義。
• 若要匹配字符‘]’,可以在它前面放一個反斜線或者將它放在集合的開始。
“|” A|B,此處的A和B可以是任意的正則表達式,創建的這個正則表達式要麼匹配A,要麼匹配B,‘|’可以用來隔開任意個數的正則表達式。
2、re模塊的內容
re模塊定義了幾個函數、常量和異常。
re.compile(pattern,flag=0) 將正則表達式模式編譯成一個正則表達式對象,它可以使用match()和search()方法來進行匹配
Linux 基礎入門教程----正則表達式基礎 http://www.linuxidc.com/Linux/2015-08/121441.htm
Linux正則表達式sed 詳述 http://www.linuxidc.com/Linux/2015-04/116309.htm
Linux正則表達式特性及BRE與ERE的區別 http://www.linuxidc.com/Linux/2014-03/99152.htm
grep使用簡明及正則表達式 http://www.linuxidc.com/Linux/2013-08/88534.htm
正則表達式的用法 http://www.linuxidc.com/Linux/2013-03/81897.htm
正則表達式之零寬斷言 http://www.linuxidc.com/Linux/2013-03/81897.htm
Linux中正則表達式與文件格式化處理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm
基礎正則表達式 http://www.linuxidc.com/Linux/2014-09/106296.htm
常用正則表達式整理 http://www.linuxidc.com/Linux/2014-10/108076.htm