python中正規表示式使用

2021-10-03 16:03:20 字數 4171 閱讀 2697

1)正規表示式的常用操作符

操作符說明例項

.表示任何單個字元

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

[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

|左右表示式任意乙個

abc擴充套件前乙個字元m次

abc表示abbc

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

abc表示abc、abbc

^匹配字串開頭

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

$匹配字串結尾

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

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

(abc)表示abc,(abc

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

\w單詞字元,匹配數字、字母、下劃線等價於[a-za-z0-9_]

正規表示式的表示型別

2)re庫主要功能函式 函式

說明re.serach()

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

re.match()

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

re.findall()

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

re.split()

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

re.finditer()

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

re.sub()

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

re.compile()

編譯正規表示式,返回乙個物件模式

3)flags:正規表示式使用時的控制標記

常用標記

說明re.i re.ignorecase

忽略大小寫的匹配模式

re.m re.mulltiline

多行模式。改變和$的行為。操作符能夠將給定字串的每行當作匹配開始

re.s re.dotall

此模式下』.'的匹配不受限制,可配配任何字元,包括換行符

re.x

忽略正規表示式中的空白和#號的注釋

4)match object物件的一些常用方法 方法

說明group()

返回被re匹配的字串

groups()

返回乙個包含所有小組字串的元組

start()

返回匹配字串開始的位置

end()

返回匹配字串結束的位置

span()

返回乙個元組,還元組由匹配字串開始和結束的位置組成,即(開始位,結束位)注意,左閉右開

5)match物件的屬性 屬性

說明.string

待匹配的文字

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

.pos

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

.endpos

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

a).re.serach(pattern,string,flags = 0)

import re

if match:

print(match.group(0))

b).re.match(pattern,string,flags = 0)

import re

if match:

print(match.group(0))

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

import re

print(ls)

輸出:['100081', '100084']

d).re.split(pattern,string,maxsplit= 0 ,flags = 0)

import re

print(ls)

輸出:['bit ', ' tsu', '']

e).re.finditer(pattern,string,flags=0)

import re

if m:

print(m.group(0))

輸出: 100081

100084

f).re.sub(pattern,repl,string,count = 0,flags=0)

import re

print(s)

輸出:bit zipcode tsuzipcode

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

pat = re.compile(r"a.b",re.i) #忽略大小寫

pat.search('kanbli').group() #方法.group返回乙個或多個匹配的字串

輸出:'anb'

6)最小匹配操作符

操作符說明*?

前乙個字元0次或無限次擴充套件,最小匹配

+?前乙個字元1次或無限次擴充套件,最小匹配

??前乙個字元0次或1次擴充套件,最小匹配

?前乙個字元m次至n(含n)次擴充套件,最小匹配

# 1、

# 2、&bcoffset=3&ntoffset=3&p4ppushleft=1%2c48&s=44

# 3、&bcoffset=0&ntoffset=6&p4ppushleft=1%2c48&s=88

import requests

import re

cookies =

def gethtml(url):

try:

r = requests.get(url,headers = kv,cookies = cookies, timeout = 30)

r.raise_for_status() #如果狀態不是200,引發httperror異常

print(r.request.url)

return r.text

except:

return "爬取失敗"

def parsepage(ilt,html):

try:

plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)

tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)

for i in range(len(plt)):

price = eval(plt[i].split(":")[1])

tiltle = eval(tlt[i].split(":")[1])

except:

print("解析異常")

def printgoodslist(ilt):

tplt = "\t\t"

print(tplt.format("序號","**","商品名稱"))

count = 0

for g in ilt:

count = count + 1

print(tplt.format(count,g[0],g[1]))

def main():

goods = "書包"

depth = 2 #深度

start_url = "" + goods

infolist=

for i in range(depth):

try:

url = start_url + '&s=' + str(44*i)

html = gethtml(url)

parsepage(infolist,html)

except:

continue

printgoodslist(infolist)

if __name__ == "__main__":

main()

python中正規表示式

python中正規表示式語法與linux中的相容 檢視正規表示式 python提供re模組,包含所有正規表示式的功能。由於python的字串本身也用 轉義,所以要特別注意 s abc 001 python的字串 對應的正規表示式字串變成 abc 001 建議使用python的r字首,就不用考慮轉義的...

Python 中 正規表示式

一 最近要對字串執行很多操作,所以學了正規表示式 不得不說正規表示式對字串的操作還是很給力的 runoob上面的教程 python中的正規表示式 正規表示式教程 python中要使用正規表示式,首先要匯入re模組 import re 二 常用函式 或者說方法 re.match 作用 嘗試從字串的起始...

Python中正規表示式

python re模組正規表示式中常用的字元有兩類 普通字元和11個元字元,元字元表示特定的功能,比如下面的 被括起來的表示式將作為分組,從表示式左邊開始每遇到乙個分組的左括號 編號 1。分組表示式作為乙個整體,可以後接數量詞。表示式中的 僅在該組中有效。那麼我們想匹配表示式中的 字元怎麼辦呢?通過...