RE模組的學習

2022-06-14 15:27:10 字數 1720 閱讀 9056

re模組是什麼

基礎方法有哪些

在python中使用正規表示式的特點和問題

使用正規表示式的技巧

爬蟲的例子

findall ,返回列表 找所有的匹配項

search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返應none,group會報錯

match 相當於search的正規表示式中加了乙個'^'

spilt 返回列表,按照正則規財切影,預設匹配到的內容會被切掉

sub/subn 替換,按照正則規則去尋找要被善換掉的內容,subn返回元組,第二個值是普換的次數

compile 編譯乙個正規表示式,用這個結果去search match findalll finditer 能夠節省時間

finditer 返回乙個送代器,所有的結果都在這個送代器中,需要通過迴圈+group的形式取值

import re

ret = re.findall('a', 'eva egon yuan') # 返回所有滿足匹配條件的結果,放在列表裡

print(ret) #結果 : ['a', 'a']

ret = re.search('a', 'eva egon yuan').group()

print(ret) #結果 : 'a'

# 函式會在字串內查詢模式匹配,只到找到第乙個匹配然後返回乙個包含匹配資訊的物件,該物件可以

# 通過呼叫group()方法得到匹配的字串,如果字串沒有匹配,則返回none。

ret = re.match('a', 'abc').group() # 同search,不過盡在字串開始處進行匹配

print(ret)

#結果 : 'a'

ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在對''和'bcd'分別按'b'分割

print(ret) # ['', '', 'cd']

ret = re.sub('\d', 'h', 'eva3egon4yuan4', 1)#將數字替換成'h',引數1表示只替換1個

print(ret) #evahegon4yuan4

ret = re.subn('\d', 'h', 'eva3egon4yuan4')#將數字替換成'h',返回元組(替換的結果,替換了多少次)

print(ret)

obj = re.compile('\d') #將正規表示式編譯成為乙個 正規表示式物件,規則要匹配的是3個數字

ret = obj.search('abc123eeee') #正規表示式物件呼叫search,引數為待匹配的字串

print(ret.group()) #結果 : 123

import re

ret = re.finditer('\d', 'ds3sy4784a') #finditer返回乙個存放匹配結果的迭代器

print(ret) # print(next(ret).group()) #檢視第乙個結果

print(next(ret).group()) #檢視第二個結果

print([i.group() for i in ret]) #檢視剩餘的左右結果

findall中分組是有優先順序, search中分組則是由進行取到並且可以通過grop(1)進行獲取     

取消優先分組(?:正規表示式)

Python的re模組學習

import re ret re.findall alex hdasoialexhosfo print ret 萬用字元 re1 re.findall c abcc print re1 以什麼開頭 ret2 re.findall ad.c adihoc l print ret2 以什麼結尾 re3 ...

python學習之re模組

這幾天玩爬蟲已經使用了很多次的re模組,算是比較熟悉了,這裡梳理一下。首先,關於正規表示式的概念,這裡有最好的教程。對於正規表示式,我們可以先用compile方法編譯為pattern物件,再呼叫相關的方法進行模式匹配,也可以直接進行匹配。對於第一種,示例如下 123 4567 8910import ...

python模組 re模組

匹配任意字元 匹配指定字元類別 字元開頭 字元結尾 取非字元 重複多次字元 0次或多次 重複多次字元 1次或多次 重複單次字元 左右表示式任意匹配 重複m到n次字元 重複m次字元 d 匹配任何十進位制數,相當於 0 9 d 匹配任何非數字字元,相當於 0 9 s 匹配任何空白字元,相當於 fdss ...