在Python開發爬蟲過程中經常會遇到正則表達式,其中(.*?) 的使用概率較高,那麼這個正則表達式到底什麼意思呢?
“.*?” 表示非貪心算法,表示要精確的配對。
“.*”表示貪心算法,表示要儘可能多的匹配
“()” 表示要獲取括弧之間的信息。
用一個例子來說明一下。
import re
a = 'xxIxxjshdxxlovexxsffaxxpythonxx'
infos = re.findall('xx(.*?)xx', a)
print(infos)
此時字符串的解析結果應該爲:
xxIxx
jshd
xxlovexx
sffa
xxpythonxx
符合檢索條件的爲:
xxIxx
xxlovexx
xxpythonxx
由於只需要獲取() 之間的數據,所以最終的結果爲:
['I', 'love', 'python']
如果使用“.*”表達式,則反饋 去掉頭尾xx 之間的全部數據。
['Ixxjshdxxlovexxsffaxxpython']