python正則的使用範圍十分廣泛,不論是在爬蟲中還是在專案開發過程中都離不開正則匹配,對於剛學習正則的人來說看到正則匹配的式子會感到很迷惑,不知所云,本文就從基礎的正則開始一步一步加強。
因為正規表示式也是用字串表示的,所以,我們要首先了解如何用字元來描述字元。
基本正則字串
\d:匹配乙個數字
\w:匹配乙個數字或字母
\s:匹配乙個空格
.:匹配任意字元
*:匹配任意個字元(包括0個)
+:匹配至少乙個字元
?:匹配0個或1個字元
^:匹配的表示式以^後的字元開始
$:匹配的表示式以$前的字元結束
a|b:匹配a或b
.*?:非貪婪匹配
python提供re模組,包含所有正規表示式的功能。為了避免python和正規表示式對轉義「\」造成衝突,re提供了『r』字首,例如r"\n" 表示包含 「\」 和 「n」 兩個字元的字串,而 「\n」 則表示只包含乙個換行符的字串。
如果乙個正規表示式要重複使用幾千次,出於效率的考慮,我們可以預編譯該正規表示式,接下來重複使用時就不需要編譯這個步驟了,直接匹配:
>>> import re
# 編譯:
>>> re_telephone = re.compile(r'^(\d)-(\d)$')
# 使用:
>>> re_telephone.match('010-12345').groups()
('010', '12345')
>>> re_telephone.match('010-8086').groups()
('010', '8086')
掃瞄整個字串找到匹配樣式的第乙個位置,並返回乙個相應的 匹配物件。如果沒有匹配,就返回乙個 none。
如果 string開始的0或者多個字元匹配到了正規表示式樣式,就返回乙個相應的 匹配物件 。 如果沒有匹配,就返回 none ;注意即便是 multiline 多行模式, re.match() 也只匹配字串的開始位置,而不匹配每行開始。
用 pattern 分開 string 。 如果在 pattern 中捕獲到括號,那麼所有的組裡的文字也會包含在列表裡。如果 maxsplit 非零, 最多進行 maxsplit 次分隔, 剩下的字元全部返回到列表的最後乙個元素。
>>> re.split(r'\w+', 'words, words, words.')
['words', 'words', 'words', '']
>>> re.split(r'(\w+)', 'words, words, words.')
['words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split(r'\w+', 'words, words, words.', 1)
['words', 'words, words.']
>>> re.split('[a-f]+', '0a3b9', flags=re.ignorecase)
['0', '3', '9']
對 string 返回乙個不重複的 pattern 的匹配列表, string 從左到右進行掃瞄,匹配按找到的順序返回。如果樣式裡存在一到多個組,就返回乙個組合列表;就是乙個元組的列表(如果樣式裡有超過乙個組合的話)。空匹配也會包含在結果裡。
re.sub用於替換字串中的匹配項。先用pattern匹配到string中要替換的物件,然後用repl替換掉即可,repl可以是表示式也可以是函式,具體實現參考
轉義 pattern 中的特殊字元。如果你想對任意可能包含正規表示式元字元的文字字串進行匹配,它就是有用的。比如
Python基礎知識 正則
import re str4 r id w w w s re.match str4,id 3aea5f99 6797 48bc 8b62 767a16d748c1 print s,type s if str s none print 1 else print 2 python正則寫法 1 匯入re ...
正則基礎知識
g 全域性匹配 i 忽略大小寫 gi 以上組合 匹配乙個輸入或一行的開頭,a 匹配 an a 而不匹配 an a 匹配乙個輸入或一行的結尾,a 匹配 an a 而不匹配 an a 匹配前面元字元0次或多次,ba 將匹配b,ba,baa,baaa 匹配前面元字元1次或多次,ba 將匹配ba,baa,b...
基礎知識 正則
正規表示式簡介 測試字串的內的模式看字串是否符合規範,就是資料驗證 替換文字 在字串內提取子字串 正規表示式語法 一.普通字元 符號表示,前面的乙個字元至少出現一次 1 runoo b可以匹配runoob,runooob,runoooob等 符號表示,前面的乙個字元可以出現0次或者一次或者多次 0 ...