19 10 21 Python 正規表示式 爬蟲

2021-09-28 20:18:35 字數 2300 閱讀 1397

【正規表示式】

由一些特定字元及其組合所組成的字串表示式,用於對目標字串進行過濾。

【正規表示式的常見基本符號】

基本符號

含**釋d數字

d為非數字

w單詞字元(大小寫字母或數字)

w為非單詞字元

.單個字元

代表除換行符以外的任意單個字元。例如『a.c』可以代表『abc』、『acc』,但不能代表『abbc』

?多個字元(非貪婪模式)

匹配前乙個字元0次或1次

*多個字元

匹配前乙個字元0次或無數次

+多個字元

匹配前乙個字元1次或無數次|或

分隔字元之間「或」的關係,例如『[p|p]ython』能匹配出『python』或『python』^開始

引導字串開始的特徵$結尾

引導字串結尾的特徵\轉義

為其後面的符號轉義,但為避免與python字串本身的轉移相混淆,建議正規表示式以r字首統一轉義。例如『\d』可以表示為r『d』

界定單個字元

()界定乙個整體

{}重複次數

【精確匹配】

數字和字元:用 '\d' 可以匹配乙個數字,用 '\w' 可以匹配乙個字元(包括數字)。例如:'11\d' 可以匹配 '114',但不能匹配 '11a' ;'\d\d\d' 可以匹配 '021' 但不能匹配 'abc' ;'\w\w\d' 可以匹配 'mp4' 也可以匹配 '163' 。

任意單個字元:用 '.' 可以匹配任意單個字元。例如 'py.' 可以匹配 'py2'、'py!' 、'py@' 或 'py\' 。

多個字元:用 '*' 表示任意個字元(包括0個),用 '+' 表示至少乙個字元,用'?'表示0個或1個字元,用 '' 表示n個字元,用 '' 表示n-m個字元,例如,有正規表示式 '\d\s+\d' 中,'\d' 表示匹配三個數字, '\s+' 代表匹配乙個或無數個空格(包括製表位空格),'\d' 代表3~8位數字。這樣,該表示式就可以匹配帶區號的以任意個空格隔開的**號碼。

字元範圍:用 '' 表示字元範圍,一組 '' 只能表示乙個字元,例如,'[0-9a-za-z\_]'可以匹配1個數字、字母或下劃線;'p|y' 也是用來表示字元範圍,可以匹配成 'p' 或 'p'。

開頭和結尾:用 '^' 引導字串開頭,例如 '^\d' 表示必須以數字開頭;用 '$' 指示字串結尾,例如 '\d$' 表示必須以數字結尾。

特使字元:特殊字元通常指非字母、非數字字元。例如,換行符 '\n'、回車符 '\r'、空白符 '\s'、製表位符 '\t' 等。 為避免與語法表示式中符號的歧義,要用 '\' 轉義或加 r 字首統一轉義。例如常見的用 '-' 隔開區號的**號碼,可用正規表示式 '\d\-\d' 或 r'd-d' 匹配。

漢字:匹配漢字的正規表示式為 '\u4e00-\u9fa5' 。在支援unicode編碼的系統中也可用漢字直接精準匹配

【貪婪匹配】

這是一種盡可能多地匹配字元地匹配思想,例如:'[0-9a-za-z][0-9a-za-z]*' 可以匹配由字母或下劃線開頭,與任意個數字、字母或下劃線組成字串(即python的變數命名規則)。貪婪匹配時正規表示式預設的匹配方式,但在實際應用中有時也不能滿足精準匹配的需求。用 '?' 可將前面的字元匹配從貪婪匹配轉變為精準匹配,即盡可能減少重複匹配, '?' 表示對前乙個字元重複 m~n 次,並且盡可能少地重複。 例如在匹配字串 'aaaaaa' 時, 'a' 取上限可匹配 'aaaa',但 'a?' 取下限只匹配 'aa'。

【替換】

用re庫中地sub()和subn()函式,可以將正規表示式所匹配的字串內容替換成指定字串內容,並返回替換後的字串。這兩個函式用法一樣,只是sub()返回的是替換後的新字串,而subn()是以宇宙女足型別返回新字串和替換次數。通式如下:

re.sub(pattern, replace_str, sourse_str[, count, flags])

re.subn(pattern, replace_str, sourse_str[, count, flags])

其中,replace_str 和 sourse_str分別代表擬替換字串和源字串,體驗**如下:

import re

pattern = re.compile('[\d]')

sourse_str = '1234abcd123def2222hijk'

print(p.sub('***', sourse_str))

print(p.subn('***', sourse_str))

執行結果為:

***4abcd***def***2hijk

('***4abcd***def***2hijk', 3)

Python 正則表達表 元字元

表包含了元字元的完整列表以及它們在正規表示式上下文中的行為 字元 描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multili...

python合法表示式 Python 正規表示式

a za z 0 9a za z 更精確地限制了變數的長度是1 20個字元 前面1個字元 後面最多19個字元 a b可以匹配a或b,所以 p p ython可以匹配 python 或者 python 表示行的開頭,d表示必須以數字開頭。表示行的結束,d 表示必須以數字結束。你可能注意到了,py也可以...

python正則 python正則表達

正規表示式是一種用來匹配字串的強有力的 設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它 匹配 否則就不匹配。一 可以通過幾類符號設計限定規則,常用的思想如下 匹配除換行符以外的任意字元 w匹配字母 數字 下劃線或漢字 w匹配字母 數字 下劃線或漢字以外的字元 s匹配任...