關於正則的簡單介紹 會的不用看系列

2021-09-17 23:18:35 字數 2439 閱讀 3928

2.1正則(re)模組

正則在python中應用非常廣泛,如:特定字串的查詢、切割與替換等, 特定格式(郵箱、手機號、ip、url)的校驗,爬蟲提取特定內容,所以在爬蟲中, 正則還是比較重要的,它會幫你提取到你需要的資訊。

使用原則

正則效率比較低,會較低**可讀性, 所以字串函式可以解決的問題就不要使用正則。

世界上最難以理解的三樣東西:道士神符、醫生處方、碼農正則。

不清楚功能不要去閱讀別人的正則,正則是用來寫的,不是讀的。

說明:我們需要解析正則,只是使用,所以需要借助』re』模組

match:從開頭進行匹配,匹配到返回結果,沒有返回none

search:任意位置匹配,功能和match一樣,都是單次的,找到就會停止

findall:匹配全部,返回所有匹配的結果列表,沒有返回空列表

compile:建立正規表示式物件,讓匹配內容和物件分開操作

例子(不建立正則物件):

import re

m = re.search('abc', 'hadajabcadjlae')

if m:

#返回匹配的內容

print(m.group())

#返回匹配內容的位置

print(m.span())

例子(建立正則物件):

import re

c = re.compile('cba')

# 從開頭匹配

#m = c.match('cbasdhaj; acbaalsdk')

#從任意位置匹配

m = c.search('casdhaj; acbaalsdk')

if m:

print(m.group())

(1)匹配單個字元

普通字元:就是一對一的完全匹配

表示中間的任一字元

如:[abcde]表示abcde的任一字元

\d表示數字字元,和[0-9]等價

\d表示非數字字元,和[^0-9]等價

\s表示空白字元(\n、\r、\t、空格)

\s表示非空白字元(\s相反的內容)

\b表示詞邊界(開頭、結尾、空格、標點)

\b表示非詞邊界(\b相反的內容)

\w表示匹配字(數字、字母、下劃線)

\w表示匹配非字(\w相反的內容)

.表示除了』\n』以外的任意字元

(2)次數限定

說明:為了修飾前面的單個字元出現的次數

? :至多一次

:指定m次

:m <= 次數 <=n

:至少m次

:至多m次

(3)邊界限定

^:以指定的內容開頭

$:以指定的內容結尾

(4)優先順序與整體

|:表示或,擁有最低的優先順序

():可以表示乙個整體

(5)findall的特殊之處

說明: 按照正則進行匹配,但是新增()後,結果只顯示()匹配的內容

例子3:

f = re.findall('a(abc)a', 'asdjaabcaasdjaabcasdkabca')

print(f)

(6)貪婪匹配

貪婪:最大限度的匹配。 正則的匹配預設是貪婪的

非貪婪:只要滿足條件,能少匹配就少匹配。 可以使用』? '取消貪婪

.+? :取消至少一次的貪婪匹配

.*? :取消任意多次的貪婪匹配

簡單來說就是能少匹配就少匹配內容

(7)字元轉義

(8)正則切割

和字串切割一樣使用split函式

例子:

import re

c = re.compile(r'\d')

string = '正則其實不難1但是學完之後2發現什麼也不出來3是這樣吧'

#字串是固定切割,不能解決某類的匹配切割問題

#print(string.split('1'))

# 按照正則進行切割

#1.建立表示式

ret = c.split(string)

print(ret)

#2.不建立表示式

print(re.split(r'\d', string))

(9)正則替換

使用sub函式

例子:

import re

s = 'how1are2you'

#正則替換,以空格替換數字

s2 = re.sub(r'\d', ' ', s)

print(s2)

總結

正則是用來寫的,所以千萬不要硬讀別人的正則。 正則在爬蟲中會經常用到,所以學好正則對爬蟲很關鍵。 當然,正則還有其他的應用和用法,但是爬蟲基本上能用的就這些了, 其他的如果有興趣可以從網上搜一下,有很多關於python正則的介紹呢!

關於adodb的簡單介紹

adodb 不管後端資料庫如何,訪問資料庫的方式都是一致的,開發設計人員不必為了某一套資料庫,而必須再學習另一套不同的 訪問方法,這大大減輕開發人員的知識負擔,過去的知識往後仍可繼續使用 外文名 active data objects data base 簡 稱 adodb 含 義 php 訪問資料...

關於GitHub的簡單介紹

github是目前世界上最先進的分布式版本控制系統,最初由linus torvalds編寫,用作linux核心 的管理。在推出後,git在其它的專案中也取得了很大成功,尤其是在ruby社群中。目前,包括rubinius merb和bitcoin在內的很多知名專案都使用了git。git同樣可以被諸如c...

關於for迴圈的簡單介紹

for迴圈結構是由三部分組成的 初始變數 迴圈條件 變數的變化和迴圈的語句塊。初始變數 迴圈開始時,變數的初始值,當定義多個變數時,他們中間用 隔開。迴圈條件 又叫測試語句,測試給定的條件是真還是假。如果條件為真,那麼就要執行迴圈中給定的 否則迴圈就會退出來。迴圈語句塊 當條件滿足時,所要執行的 給...