正規表示式re
import re
全稱:regular expression
首先,簡單表達一組字串
'pn'
,'pyn'
,'pytn'
,'pythn'
,'python'
regex=
"p(y|yt|yth|ytho)?n"
p=re.
compile
(regex)
re的作用:
1,表達文字型別的特徵
2,同時查詢或者替換一組字串
3,匹配字串的全部部分
編譯:將符合正規表示式語的字串轉換成正規表示式的特徵。
主要由字元和操作符組成。
.
#表任何單個字元 #字符集[^
]#非字符集,單個字元給出排除範圍 * #前乙個字元0次或無限次擴充套件
+#前乙個字元1次或無限次擴充套件 ? #前乙個字元0次或無限次擴充套件
! #左右表示式各乙個
#擴充套件前邊乙個字元m次 #擴充套件前邊乙個字元0次到n次
^#匹配字串的開頭 eg. ^abc $ #匹配字串的結尾 eg. abc$()
#分組標記,內部只能使用|操作符 \d #數字,等價於0-9
\w #單詞字元,等價於[a-za-z0-9]
#例子^
[a-za-z]
+$ #26字母字串
^[a-za-z0-9]
+$ #字母數字組成的字串
^-?\d+$ #整數形式字串^[
0-9]
*[0-
9][1
-9]*$ #正整數形式字串[1
-9]\d[\u4e00-\u9fa5]
#匹配中文字元
\d-\d
|\d-\d
#國內**號碼
re庫的使用:
raw string型別,原生字串型別r『text』
例如r』[1-9]\d』
當正規表示式中含有轉義符的時候,使用raw string
因為在string中,\會被當作轉義符,所以每個\都要變成\
0~99
:[1-
9]?\d
100~
199:
1\d200
~249:2
[0-4
]\d250
~255:25
[0-5
]
#re的功能函式
re.search(
)#匹配正規表示式第乙個位置,返回match物件
re.match(
)#從乙個字串開始位置匹配正規表示式,返回match物件
re.findall(
)#搜尋字串,以列表形式返回全部
re.split(
)#將乙個正規表示式按照正規表示式結果分割,返回列表型別
re.finditer(
)#搜尋字串,返回正規表示式迭代型別,每個迭代元素是match物件
re.sub(
)#在乙個字串替換所有匹配正規表示式的字串,返回替換後的
re.search(pattern,string,flags=0)
#pattern指string或者raw string
#string指待匹配字串
#flags指控制標記,主要有:
re.i re.ignorecase #忽略大小寫
re.m re.multiline # ^ 能將給定string的每行當作匹配開始
re.s re.dotall # . 預設匹配除換行外所有的字元,現在可以匹配所有字元
#re庫的函式式用法
#1rst=re.search(
)#2,物件導向
pat=re.
compile()
#編譯成正規表示式
rst=pat.search(
)
#match物件的屬性
.string 待匹配文字
.re 匹配時的re物件
.pos 正表搜尋文字的開始位置
.endpos 正表搜尋文字的結束位置
.group(
0) 獲得匹配後的字元
.start(
) 匹配在原始字串開始的位置
.end(
) 匹配在原始字串結束的位置
.span(
) 返回(.start(),
.end(
))
關於貪婪匹配和最小匹配:
貪婪匹配是匹配並輸出相符的最長字串,而最小匹配可以輸出所有字串
*? #前乙個字元0次或者無限次無限擴充套件,最小匹配,基礎用的最多的就是 .*?
+? #前乙個字元1次或者無限次無限擴充套件,最小匹配
?? #前乙個字元0次或者1次擴充套件,最小匹配
#擴充套件前乙個字串m次到n次
爬蟲學習筆記 2 正規表示式
在爬蟲學習中,經常會用到正規表示式去匹配網頁源 中的特定字串,例如網頁鏈結,標題等相關資訊。在處理這類問題上,正規表示式可以說是一大利器。當然在python中還有類似的較為簡單的方法處理這類問題,比如beautifulsoup,pyquery,xpath等相應的庫,當這些庫失靈的時候,兜兜轉轉回到最...
爬蟲 正規表示式
正規表示式 regular expression 是一種字串匹配的模式 pattern 它可以檢查乙個字串是否含有某種子串 替換匹配的子串 提取某個字串中匹配的子串。匯入正則模組 importre 字元匹配 rs re.findall abc adc print rs rs re.findall a...
正規表示式學習筆記
正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...