本文建議有一定正則基礎的看
正規表示式可以包含普通或者特殊字元。絕大部分普通字元,比如 『a』, 『a』, 或者 『0』,都是最簡單的正規表示式。它們就匹配自身。有些字元,比如 『|』 或者 『(』,屬於特殊字元。 特殊字元既可以表示它的普通含義, 也可以影響它旁邊的正規表示式的解釋。
重複修飾符 (* , +, ?, , 等) 不能直接巢狀。這樣避免了非貪婪字尾 ? 修飾符,和其他實現中的修飾符產生的多義性。要應用乙個內層重複巢狀,可以使用括號。 比如,表示式 (?:a)* 匹配6個 『a』 字元重複任意次數。特殊字元:
.
:點在預設模式,匹配除了換行的任意字元,如果指定了標籤dotall
,他將匹配包括換行符的任意字元。
^
:插入符匹配字串的開頭,並且在multiline
模式也匹配換行後的首個符號
$
:匹配字串尾或者換行符的前乙個字元,在multiline
模式匹配換行符的前乙個字元。
*
:對它前面的正則式匹配0到任意次重複,盡量多的匹配字串。ab* 會匹配』a』,『ab』,或者『a』後面跟著任意個『b』
+
:對它前面的正則匹配1到任意次重複。ab+會匹配『a』後面跟隨1個以上到任意個『b』。
?
:對它前面的正則式匹配0到1次重複。ab?會匹配『a』或者『ab』。
*?
,+?
,??
: 『* 』,『+』,』?'修飾符都是貪婪的,他們在字串進行盡可能多的匹配。有時候並不需要這種行為。在修飾符之後新增 ? 將使樣式以非貪婪方式或者 :dfn:`最小 方式進行匹配; 盡量 少 的字元將會被匹配。
用正則式<.>、<.?> 分別匹配< a> b < c>結果完全不同,第一種它將完全匹配,因為貪婪。第二個正則式將匹配< a>
:對之前的正則式指定匹配m個重複。
:對正則式進行m到n次匹配,在m、n之間取盡量多
?
:前乙個修飾符的非貪婪模式,只匹配盡量少的字元次數。比如:『aaaaaa』,a匹配5個』a』,而a?只匹配3個『a』
:表示乙個字元集合,在乙個集合中:
· 字元可以單獨列出,比如[amk]匹配『a』,'m』或者『k』
· 可以表示字元範圍,通過用『-』將兩個字元連起來,比如[a-z]將匹配任何小寫ascii字元,[0-5][0-9]將匹配從00 到59的兩位數子。 [0-9a-fa-f] 將匹配任何十六進製制數字。
· 特殊字元在集合中,將失去他的特殊含義。比如[(+* )]只會匹配這幾個字元:『(』, 『+』, 』 * ', 『)』
· 不在集合範圍內的字元可以通過取反來進行匹配,如果集合首字元是『^』,所有不在集合內的字元將會匹配,比如 [^5] 將匹配除5之外的所有字元。除了 『5』, [^^] 將匹配所有字元,除了 『^』. ^ 如果不在集合首位,就沒有特殊含義。
模組定義了幾個函式、常量和乙個例外。
將正規表示式的樣式編譯成為乙個正規表示式物件,可以用於匹配,通過這個物件的方法match(),search()。
序列
m = re.
compile
(pattern)
result = m.match(string)
等價於
result = re.match(pattern, string)
掃瞄整個 字串 找到匹配樣式的第乙個位置,並返回乙個相應的 匹配物件。如果沒有匹配,就返回乙個 none ; 注意這和找到乙個零長度匹配是不同的。
如果 string 開始的0或者多個字元匹配到了正規表示式樣式,就返回乙個相應的 匹配物件 。 如果沒有匹配,就返回 none ;注意它跟零長度匹配是不同的。
注意即便是 multiline 多行模式, re.match() 也只匹配字串的開始位置,而不匹配每行開始。
如果你想定位 string 的任何位置,使用 search() 來替代(也可參考 search() vs. match() )
python re模組 正規表示式
需要 importre 轉義字元 abc 匹配中括號中的乙個字元 a c 匹配a c中的乙個字元 a dm p 匹配a d或m p中的乙個字元 除換行符 n 之外的任何單個字元匹配 w 匹配乙個單詞字元 字母 包括a z a z 數字 下劃線 w 匹配 除 w之外的其它字元 s 匹配 任何空白字元,...
python re模組(正規表示式)
re 模組的使用 1.使用compile 函式編譯乙個parttern物件,例如 parttern re.compile r d 2.通過pattern物件提供的一系列屬相和方法,對文字進行匹配查詢,獲得結果,即乙個match物件 3.使用match物件的屬相和方法獲取資訊 match.group ...
正規表示式 python re正則模組
python內建模組連線 re d w s 等解釋 快速使用 多行匹配 re.dotall 查詢 findall re.compile findall xml line 0 返回列表 match re.compile match xml line 返回第乙個,不搜尋新行,match group 返回...