正則表示式
用來處理字串,對字串進行檢索和替換,另外正則在python爬蟲的應用也是相當廣泛!
特點
靈活性、邏輯性和功能性非常強
可以迅速地用極簡單的方式達到字串的複雜控制
正則的寫法
。(點號): 表示任意一個字元,除了\n,比如查詢所有的一個字元 。
[]: 匹配中括號中列舉的任意字元,比如[L,Y,0], LLY, Y0, LIU
\d: 任意一個數字
\D: 除了數字都可以
\s: 表示空格,tab鍵
\S: 除了空白符號
\w: 單詞字元,就是a-z, A-Z, 0-9, _
\W: 除了“\w”表示的都可以
: 表示前面內容重複零次或者多次, \w
+: 表示前面內容至少出現一次
?: 前面才出現的內容零次或者一次
{m,n}: 允許前面內容出現最少m次,最多n次
^: 匹配字串的開始
$: 匹配字串的結尾
\b: 匹配單詞的邊界
(): 對正則表示式內容進行分組,從第一個括號開始,編號逐漸增大
\A: 只匹配字串開頭,\Aabcd, 則abcd
\Z: 只匹配字串末尾,abcd\Z, abcd
|: 左右任意一個
(?P。。。): 分組,除了原來的編號再製定一個別名,(?P12345){2}, 1234512345
(?P=name): 引用分組
RE使用大致步驟
使用compile將表示正則的字串編譯為一個pattern物件
透過pattern物件提供一系列方法度文字進行查詢匹配,獲得匹配結果,一個Match物件
最後使用Match物件提供的屬性和方法獲得資訊,根據需要進行操作
RE常用函式
group(): 獲得一個或者多個分組匹配的字串,當要獲得整個匹配的子串時,直接使用group或者group(0)
start: 獲取分組匹配的子串在整個字串中的起始位置,引數預設0
end: 獲取分組匹配的子串在整個字串中的結束位置,預設為0
span: 返回的結構技術(start(group), end(group))
search(str, [, pos[, endpos]]): 在字串中查詢匹配,pos和endpos表示起始位置
findall: 查詢所有
finditer:查詢,返回一個iter結果
sub 替換
sub(rep1, str[, count])
匹配中文
大部分中文表示範圍是[u4e00-u9fa5], 不包括全形標點
貪婪和非貪婪
貪婪:儘可能多的匹配, (*)表示貪婪匹配
非貪婪:找到符合條件的最小內容即可,(?)表示非貪婪
正則預設使用貪婪匹配
通曉任何一門程式語言,都需求透過大量的實踐來積累經驗,解決遇到的各種疑難問題,看別人的原始碼,分享自己的分碼的這個程序,才能夠通曉Python的方方面面。一個對Python程式能算的上通曉的程式設計師,對相同一個問題,他知道很多種解決問題的方法,並能從中挑選最有功率的方法!安排