我的爬蟲學習之旅 三 正規表示式

2021-09-19 17:23:44 字數 2158 閱讀 9997

正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。用大白話來講,正規表示式是一種匹配模式,能夠從目標文字內容中匹配到預定義的字串序列。

正規表示式30分鐘入門教程

當然,正規表示式的學習需要時常練習,對於那些常用到的語法規則需熟記於心。在一開始的學習不能夠急於求成,網上的大部分教程並非每個都適合自己,需要多做比對耐心學習,你便能掌握這一套規則體系。

python中引入re模組,便能使用正規表示式處理函式。

import re
re.match()嘗試從字串的起始位置匹配乙個模式,如果字串開始不符合正規表示式,match()就返回none。

re.match(pattern, string, flags=0)
pattern:匹配模式

string:待匹配的字串

flags:標誌位,控制匹配方式(支援多行匹配以及大小寫等)

如果匹配模式帶有^$的標誌位,則必須完全符合待匹配字串開始與結束的位置。

line = "cats are 1 smarter than dogs";

res = re.match('cat.*?(\d+).*?s$', line)

print(res.group())

print(res.group(1))

print(res.span())

輸出:

cats are 1 smarter than dogs

1(0, 28)

group()方法獲取匹配的結果,當正規表示式中帶有括號時,group括號內的數字記錄正規表示式中對應括號(從1開始)內所匹配的內容。

span()獲去匹配字串的長度範圍

貪婪匹配 (.*與懶惰匹配 (.*?)乙個是盡可能多的匹配模式字串,另乙個是盡量匹配最短的串。在我們使用括號來獲得匹配目標時,應盡量使用懶惰模式。

re.search 掃瞄整個字串並返回第乙個成功的匹配。

re.search(pattern, string, flags=0)
無需從頭開始匹配,與match()一樣支援group()與span()方法,搜尋整個字串,匹配到乙個符合的結果就返回。

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

match 和 search 是匹配一次,而 findall 匹配所有。

re.findall(pattern, string, flags=0)

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件 ,供match() 和 search() 這兩個函式使用,以便之後使用這個模式。

my_pattern = re.compile(pattern, flags=0)

re.search(my_pattern, string)

替換字串中被匹配的子串,並返回替換後的字串。

phone = "2004-959-559 

# 刪除非數字(-)的字串

num = re.sub(r'\d', "", phone)

按照能夠匹配的子串將字串分割後返回列表。

# 注意最後乙個單詞某位處有乙個.號

res = re.split('\w+', 'runoob, runoob, runoob.')

print(res)

輸出:

['runoob', 'runoob', 'runoob', '']

re.i

使匹配對大小寫不敏感

re.s

使 . 匹配包括換行在內的所有字元

正規表示式(三) 正規表示式中的重複

我們在之前知道了正規表示式元字元的概念,再結合上重複的概念,才能寫出來一些相對高階的正規表示式。因為在實際的正規表示式的使用過程中,我們肯定不是那麼簡單的只用元字元來進行一些簡單的匹配,一般情況下還需要配合上重複的概念才能從乙個很長很亂的字串中匹配出我們想要的東西。下面我們會從下面的幾個方面來進行正...

JavaScript學習之三 正規表示式

一 簡單模式 元字元 一定出現n次 至少出現n次但不超過m次 至少出現n次 貪婪的 先匹配整個字串,如果沒有匹配,去掉最後字串的最後乙個字元,並再次嘗試,依次。支配量詞 只嘗試匹配整個字串。貪婪惰性 支配描述?出現0次或一次 出現零次或多次 任意次 出現一次或多次 至少一次 一定出現n次?至少出現n...

python基礎學習(三) 正規表示式

對上述 段,若使用 或 為貪婪匹配,即盡可能匹配多的字元 會匹配整段 通過在 或 限定符之後放置 使該表示式從 貪心 表示式轉換為 非貪心 表示式或者最小匹配 則只匹配到 匹配除了 n換行符之外的任一單字元 對乙個正規表示式模式或部分模式兩邊新增圓括號將導致相關匹配儲存到乙個臨時緩衝區中,所捕獲的每...