正規表示式

2021-09-26 14:44:14 字數 3002 閱讀 2787

re.match

從字串的開始位置進行匹配,起始位置不匹配則停止

最常規的匹配

re.match(正規表示式字串,待匹配物件,匹配模式)

import re

content='hello 123 4567 world'

result=re.match('^hello\s\d\s\d\sworld$',content)

print(result)

print(type(result))

print(result.group())#返回正規表示式對應的字串資訊

print(type(result.group()))

print(result.span())#字串的起止索引

print(type(result.span()))

輸出結果

<_sre.sre_match object; span=(0, 20), match='hello 123 4567 world'>

hello 123 4567 world

(0, 20)

泛匹配

import re

content='hello 123 4567 world'

result=re.match('^hello.*world$',content)

print(result.group())

匹配目標

import re

content='hello 1234567 world'

result=re.match('^hello\s(\d+)\sworld$',content)

print(result.group())

print(result.group(1))

輸出結果:

hello 1234567 world

1234567-->第乙個小括號獲得的內容

貪婪匹配

import re

content='hello 1234567 world'

result=re.match('^he.*(\d+).*ld$',content)

print(result.group(1))

輸出結果:

7–>因為前面的.*已經是貪婪匹配把123456都匹配了,而+號至少匹配乙個數字,所以匹配了7

非貪婪匹配

import re

content='hello 1234567 world'

result=re.match('^he(.*?)(\d+).*ld$',content)

print(result.group(1))

print(len(result.group(1)))

print(result.group(2))

輸出結果:

llo 

41234567

第乙個小括號取得llo+空格;第二個小括號取得1234567

要注意的是.可以匹配除了換行符之外的任意字元,所以空格也可以匹配

匹配模式

re.s,使得.可以匹配換行符

轉義

特殊字元前加上\,或者在正規表示式前面加上r

總結:盡量使用泛匹配、使用括號得到匹配目標、盡量使用非貪婪模式、有換行符就用re.s

re.search

掃瞄整個字串並返回第乙個成功匹配的內容

能使用search則不使用match

re.findall

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

re.sub

替換字串中每乙個匹配的子串後返回替換後的字串

第乙個引數是正規表示式,第二個引數是用來替換的字串,第三個引數是目標字串

**import re

content='hello 1234567 world'

result=re.sub('(\d+)',r'\1 8910',content)

print(result)**

輸出結果:hello 1234567 8910 world**

表示在保留第乙個子組的基礎上,在它後面加上』 8910』

re.sub('a|b','2',content):content中的所有的a、b替換為2

re.compile

將正規表示式編譯成正規表示式物件,以便復用該匹配模式例項

import requests

import re

url=''

response=requests.get(url,headers=headers).text

pattern = re.compile('.*?src="(.*?)".*?class="author">(.*?)

.*?"year">(.*?)',re.s)

booklist=re.findall(pattern,response)

for book in booklist:

print(book)

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...