主要內容:
1.正規表示式基本概念
2.python正規表示式re模組
3.正規表示式語法
4.re模組相關方法使用
1.使用單個字串來描述匹配一系列符合某個句法規則的字串
2.是對字串操作的一種邏輯公式
3.處理文字和資料
4.正規表示式過程:依次拿出表示式和文字中的字元比較,如果每乙個字元都能匹配,則匹配成功;否則匹配失敗。
1.import re:正規表示式模組
2.第乙個正規表示式:
r『imooc』→pattern→match→result
import re #匯入re模組
生成pattern物件:pa = re.compile(r'imooc') #匹配的字元
生成match物件:ma = pa.match('imooc.com') #被匹配的字元
ma.group() ==>imooc #返回匹配的字元
ma.span() ==>(0,5) #被匹配字串所在索引位置
ma.string() ==>'imooc.com'
#返回被匹配字串
ma.re ==>re.compile(r'imooc') #返回例項
正常匹配需要使用compile、match方法,先生成乙個pattern物件,再生成乙個match物件。pattern物件相當於將匹配字串進行了包裝,便於之後的match(匹配)。生成的的match物件是將原字串與匹配字串進行比較,將匹配成功的結果存入match物件中。使用group()方法可以將匹配成功的結果列印出來。.→ 匹配所有字元(除了換行符\n)
[…]→ 匹配字符集[a-za-z0-9]
\d/\d→ 匹配數字/匹配非數字
\s/\s →匹配空白字元/匹配非空白字元
\w/\w →匹配單詞字元[a-za-z0-9](,.等都不能匹配)/匹配非單詞字元(,.等都能匹配)
* →匹配前乙個字元0次或者無限次
+ →匹配前乙個字元1次或者無限次
? →匹配前乙個字元0次或者1次
/ →匹配前乙個字元m次或者m-n次
*?/+?/?? →匹配模式變為非貪婪(盡可能少匹配字元)
^→ 匹配字串的開頭
$ →匹配字串的結尾
| →匹配左右任意乙個表示式,或
\a/ \z→指定的字串必須出現在開頭/結尾
(ab)→ 括號中表示式作為乙個分組
\→ 引用編號為number的分組匹配到的字串
(?p) →分組起別名
(?p=name) →引用別名為name的分組匹配字串
re=re.match(r'[_a-za-z]+[_\w]*','_htll')
ma.group #返回_htll,有效
re=re.match(r'[_a-za-z]+[_\w]*','[htll')
ma.group #無效
ma=re.match(r'[1-9]?[0-9]','99')
ma.group #有效
ma=re.match(r'[1-9]?[0-9]','9')
ma.group #有效
ma=re.match(r'[1-9]?[0-9]','09')
ma.group #只匹配了0
ma=re.match(r'[a-za-z0-9]','abc123')
ma.group #有效
ma=re.match(r'[a-za-z0-9]','abc1234')
ma.group #只匹配到abc123
ma=re.match(r'[a-za-z0-9]','abc12_')
ma.group #無效
ma=re.match(r'[a-za-z0-9]@163.com','[email protected]')
ma.group #有效
ma=re.match(r'[a-za-z0-9]@163.com','[email protected]')
ma.group #無效,長度超出
ma=re.match(r'[0-9][a-z]*','1bc')
ma.group #貪婪模式,匹配到1bc
ma=re.match(r'[0-9][a-z]*?','1bc')
ma.group #非貪婪模式,盡可能少匹配,匹配到1。
ma=re.match(r'[\w]@163.com','[email protected]')
ma.group #匹配到[email protected]
ma=re.match(r'[a-za-z0-9]@163.com$','[email protected]')
ma.group #無效,必須以@163.com結尾
ma=re.match(r'<[\w]+>','')
ma.group #有效
ma=re.match(r'<([\w]+>)','')
ma.group #有效
ma=re.match(r'<([\w]+>)\1','book>')
ma.group #有效
() 是為了提取匹配的字串。表示式中有幾個()就有幾個相應的匹配字串。search(pattern, string, flags=0) #在乙個字串中查詢匹配(\s*)表示連續空格的字串。
是定義匹配的字元範圍。比如[a-za-z0-9] 表示相應位置的字元要匹配英文本元和數字。
[\s*]表示空格或者*號。
{}一般用來表示匹配的長度,比如 \s表示匹配三個空格,\s[1,3]表示匹配一到三個空格。 (0-9) 匹配 『0-9′ 本身。 [0-9]* 匹配數字(注意後面有*,可以為空)[0-9]+ 匹配數字(注意後面有 +,不可以為空) 寫法錯誤。 [0-9] 表示長度為 0 到 9 的數字字串。
findall(pattern, string, flags=0) #返回所有匹配的列表集合
sub(pattern, repl, string, count=0, flags=0) #匹配部分替換為其他值
split(pattern, string, maxsplit=0, flags=0) #根據匹配分割字串,返回分割字串組成的列表
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...