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