正規表示式
正規表示式的常用操作符
操作符說明例項.
表示任何單字元
[ ]字符集,對單個字元給出取值範圍
[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...