1. 程式人生 > >python3爬蟲——正則表示式re詳解(1)

python3爬蟲——正則表示式re詳解(1)

(一)什麼是正則表示式
還早呢過這表示式是對字串操作的一種邏輯公式,就是用實現定義好的一些特定的字元,及這些特定的字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯
ps:正則表示式非python獨有,使用re模組即可實現
(二)案例

re.match

語法格式:re.match(pattern,string,flag=0)

最常規的匹配:

最常規的匹配,表示匹配的結果為最原始的,中規中矩的匹配出結果
程式碼展示:

import re

content = 'Hello 123 4567 World_This is a Regex Demo'
print(len(content))
result = re.match('^Hello\s
\d\d\d\s\d{4}\s\w{10}.*Demo$', content) print(result) print(result.group()) print(result.span())

知識點:
(1).group()表示的是返回正則匹配的結果
(2).span()表示返回正則匹配的範圍

泛匹配

泛匹配,表示將正則匹配的字元縮短,但得到的是何上方一樣的
結果

程式碼展示:

import re

content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello.*Demo$', content)
print(result
) print(result.group()) print(result.span())

知識點:
(1) .* 可以匹配出除去換行以外的任意字元

匹配目標

匹配目標就是將需要的字元匹配出來

程式碼展示:

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld.*Demo$', content)
print(result)
print(result.group(1))
print(result.span())

知識點:
(1)()

匹配括號內的表示式,也表示一個組
(2)+ 匹配1個或多個的表示式
* 匹配0個或多個的表示式
(3).group(1)—輸出第一個帶有()的目標

貪婪匹配

在貪婪匹配中匹配出來的結果有可能不是我們想要的結果

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*(\d+).*Demo$', content)
print(result)
print(result.group(1))

非貪婪匹配

程式碼展示:

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*?(\d+).*Demo$', content)
print(result)
print(result.group(1))

知識點: 匹配0個或1個由前面的正則表示式定義的片段,為非貪婪方式,匹配儘可能少的字元

匹配模式

當出現換行的時候,.*?*是不適用的,這時
我們需要使用re.s來實現,這樣.*就可以代表換行了

程式碼展示:

import re

content = '''Hello 1234567 World_This
is a Regex Demo
'''
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)
print(result.group(1))

轉義

當有些轉移字元出現在字串中,需要使用’\’來消除他的另外一種含義

程式碼展示:

import re

content = 'price is $5.00'
result = re.match('price is \$5\.00', content)
print(result)

ps:以上均為學習崔慶才python3爬蟲的學習筆記