正規表示式Re的用法(含例項)

2021-09-28 16:50:59 字數 3352 閱讀 9304

正規表示式

正規表示式的常用操作符

操作符說明例項.

表示任何單字元

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

[abc]表示a、b、c,[a-z]表示a到z單個字元

[^ ]

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

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

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

abc*表示ab、abc、abcc、abccc等

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

abc+表示abc、abcc、abccc等

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

abc?表示ab、abc

i左右表示式任意乙個

abc i def表示abc、def

擴充套件前乙個字元m次

abc表示abbc

擴充套件前乙個字元m至n次(含n)

abc表示abc、abbc

^匹配字串開頭

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

$匹配字串結尾

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

\d數字,等價於[0-9]

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

re庫的使用

import re

當正規表示式中含有轉義字元時,使用原生字串。

使用re庫時,最好先將字串編譯成正規表示式物件:

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

再利用regex物件呼叫re庫的函式。

re庫的主要功能函式

函式說明

re.search()

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

re.match()

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

re.findall()

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

re.split()

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

re.finditer()

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

re.sub()

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

for match in re.finditer(r'[1-9]\d','bit100081 tsu100084'

): if match:

print(match.group(0))

match物件的方法

方法說明

.group(0)

獲得匹配後的字串

.start()

匹配字串在原始字串的開始位置

.end()

匹配字串在原始字串的結束位置

.span()

返回(.start(),end())

match物件的屬性

屬性說明

.string

待匹配的文字

.re匹配時使用的pttern物件(正規表示式)

.pos

正規表示式搜尋文字的開始位置

.endpos

正規表示式搜尋文字的結束位置

例項提取**商品的名稱及**:

由於**網有密碼登入的要求,這裡用的是**熱賣網

import requests

import re

import requests

import re

# 定義獲取html內容的函式

def gethtmltext(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status(

) return r.text

print(

"獲取html頁面完成"

) except:

return

""# 爬取想要的內容

def fillunivlist(ulist,html):

try:

names = re.findall(r'\',html)

# ins大容量雙肩包男韓版大學生書包女初中

prices = re.findall(r'\[\d\.]*<\/strong\>',html)

#59.90

print(

"頁面解析完成"

)for i in range(len(names)):

name=names[i].split(

'"')

[3]#

price=re.split(

">|<",prices[i]

)[2]

#59.90

[name,price]

) print(

"列表成功生成"

) except:

print("")

# 輸格式化出

def printunivlist(ulist,path):

with open(path,'a',encoding=

'utf-8'

) as f:

f.write(

"商品\t**\n"

)for i in range(len(ulist)):

u = ulist[i]

f.write(u[0]+"\t"

) f.write(u[1]+"\n"

) f.close(

) print(

"成功儲存到檔案"

)def main(

): uinfo=

good=input(

"請輸入想要獲取的商品名稱"

) page=int(input(

"請輸入想要檢索的頁面數"

)) path=

"d://"+good+".txt"

for i in range(page):

url =

"" + good + "&page=" + str(i)

html = gethtmltext(url)

fillunivlist(uinfo, html)

print(

"共搜尋了",len(uinfo),"條結果"

)# 顯示全部結果

printunivlist(uinfo,path)

if __name__ ==

"__main__"

: main(

)

Python正規表示式 re 用法

re模組 匹配開頭 結尾 re模組的基礎用法 email list xiaowang 163.com xiaowang 163.comheihei com.xiaowang qq.com for email in email list ret re.match w 163 com email 代表只...

正規表示式 RE

最近一段時間在研究nginx的rewirte重寫機制,因此對re需要有一定的了解,看了想關的文章,因此自己來寫一篇類似總結性的的文章。基本來說,正規表示式是一種用來描述一定數量文字的模式。regex regular express。本文用 regex 來表示一段具體的正規表示式。一段文字就是最基本的...

re正規表示式

1.數字 0 9 2.n位的數字 d 3.至少n位的數字 d 4.m n位的數字 d 5.零和非零開頭的數字 0 1 9 0 9 6.非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7.帶1 2位小數的正數或負數 d d 8.正數 負數 和小數 d d 9.有兩位小數的正實數 0 9 0 9...