python正規表示式(re使用)

2022-07-20 20:03:10 字數 3361 閱讀 1212

跟之前在js中所見到的正規表示式是類似的

操作符說明例項.

表示單個字元

[ ]字符集,對單個字元給出取值範圍

[abc]表示abc [a-z]不愛告訴a到z單個字元

[ ^ ]

非字符集,對單個字元給出排除範圍

[^abc]表示非a或非b或非c的單個字元

*前乙個字元0次貨無限次擴充套件

abc*表示ab、abc、abcc、abccc

+前乙個字元1次貨無限次擴充套件

abc+表示abc、abcc、abccc

?前乙個字元0次貨1次擴充套件

abc?表示ab、abc

|左右表示式任意乙個

abc|def表示abc、def

擴充套件前乙個字元m次

abc表示abbc

擴充套件前乙個字元m到n次

abp表示abc、abbc

^匹配字串開頭

^abc表示abc且在乙個字串的開頭

$匹配字串結尾

abc$表示abc且在乙個字串的結尾

()分組標記,內部職能使用|操作符

(abc)表示abc,(abc|def)表示abc、def

\d數字,等價於【0-9】

\w單詞字元,等價於【a-za-z0-9_】

函式說明

re.search()

在乙個字串中搜尋匹配正規表示式的第乙個位置,返回match物件

re.findall()

搜尋字串,以列表型別返回全部能匹配的子串

re.match()

從乙個字串的開始位置起匹配正規表示式,返回match物件

re.split()

將乙個字串按照正規表示式匹配進行分割,返回列表型別

re.finditer()

搜尋字串,返回乙個匹配結果的迭代型別,每乙個迭代元素是match物件

re.sub()

在乙個字串中替換所有匹配正規表示式的子串,返回替換後的字串

re庫中包含的一些可選標誌修飾符來控制匹配的模式

修飾描述

re.i

是匹配對大小寫不敏感

re.l

做本地化識別(locale-aware)

re.m

多行匹配,映像^和$

re.s

使.匹配包括換行再被的所有字元

re.u

根據unicode字符集解析字元,這個標誌映像\w,\w,\b,\b

re.x

該標誌通過給予更多靈活的格式以便將正規表示式寫的更易於理解

import

repat=re.compile("

aa") #

此處的aa,是正規表示式,用來驗證其他字串

m=pat.search("

aabcd

") #

search字串被校驗的內容

#輸出結果會顯示查詢到乙個匹配的位置​#

直接去進行匹配:

m=re.search("

asd","

aaasd

")#前面是規則,後面是進行匹對的物件

print

(m)​

#使用findall匹配:

print(re.findall("

[a-z]

"),"

asffsaogugfu

")#輸出多個單個字元

print(re.findall("

[a-z]+

"),"

asffsaogugfu

")#輸出多個多字串​#

sub替換

print(re,sub("

a","

a","

abcdasd

")) #

找到a用a替換,在第三個字串查詢​#

r(去除轉義\的影響),建議在正規表示式中,被比較的字串前面加上乙個r

a=r"

\aabd-\"

print(a)

1.從原始碼中獲取詳細字串片段:

import

refindlink=re.compile(r'')

#findimgsrc=re.compile(r'

',re.s)#

re.s忽略換行符

#影片片名

findtitle=re.complie(r'

(.*))

#影片評分

findrating=,,,,,,,,,,,,,,,,,,,,,,

#獲取到頁面資料並儲存到html中

html=askurl(url)​#

注意解析資料:

soup=beautifulsoup(html,"

html.parse")

for item in soup.find_all('

div',class_="

item

"): #

找到符合要求的字串,形成列表

data= #

儲存一部電影的所有資訊

item=str(item)

#獲取詳情資訊

link=re.findall(findlink,item)[0]#

注意:這裡使用findall是吧findlink中正規表示式在item中查詢並將其賦值給link

2.標籤解析:(承接上面的內容)

data= #

儲存一部電影的所有資訊

link=re.findall(findlink,item)[0]

#如果遇到了多個資料的返回物件;

title=re.findall(findtitle,item)#

標題可能會有中文名和英文名

if(len(titles)==2):

ctitle=titles[0]

otitle=titles[1].replace("

/"."")#

去掉無關符號,去掉/符號

else:'

')#外國名字留空

#同時也可以對用re提取到的字串進行替換或者增刪改查

bd=re.findall(findbd,item[0])

bd=re.sub('

(\s+)?

',"",bd) #

去掉 bd=re.sub('

/',"

",bd)#

替換/去掉前後空格之後的內容

#以上這些都是往乙個data電影資訊列表中加入

#想要得到多個電影資訊,使用for迴圈,然後放到datalist中就好了

python 正規表示式 re

match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...

python正規表示式 re

re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...

python正規表示式(re)

在python中re模組用於對正規表示式 regular expression 的支援。正規表示式是可以匹配文字片段的模式。一 正規表示式的書寫 1 萬用字元 點 可以匹配任何字元 除了換行符 如 ike 可以匹配 bike like 等 2 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...