在使用python製作爬蟲之前,我們必須要對python的正規表示式有一定的了解,在python中使用正規表示式要匯入re
包
\d
匹配數字1-9
\w
匹配字元
[ ]
匹配集合裡面的字元
+
匹配前面出現的正規表示式1次或多次
.
表示匹配任意乙個字元,除換行符除外,x.
匹配xy23
中的xy
,若是x..
則匹配出xy2
*
表示匹配0個或多個其前面的字元,x*
匹配***y123
中的***
?
表示匹配0個或1個其前面的字元,x?
匹配***y123
中的x
.*
是貪婪匹配,x.*x
它會匹配xhelloxxworldx
的整個字元
.*?
是最小匹配,x.*?x
它會匹配xhelloxxworldx
中的xhellox
python中正規表示式的分組,在python中正規表示式的分組使用( )
表示:
search(pattern, string, flags=0)
函式匹配字串符合正規表示式的第乙個位置
re.findall(pattern, string, flags=0)
函式匹配字串中所以符合正規表示式的字串
更多的內容請上官網re表示式庫查詢
# -*- coding:utf-8 -*-
import re
code = '123xxhelloxx567xxworldxx89'
f = re.search('xx(.*?)xx',code).group(1)
print(f)
#輸出答案為hello,若使.group(0)輸出的是所匹配的字串xxhelloxx
#若是使用貪婪匹配的,『(.*)』上述輸出的結果為helloxx567xxworld,若是.group(0)輸出的則是xxhelloxx566xxworldxx
re.s
表示.
可以匹配任何的字元,包括換行
# -*- coding:utf-8 -*-
import re
s = '''123xxhello
xx567xxworldxx89'''
d = re.findall('xx(.*?)xx',s)
print(d)
#輸出的結果為並不是`hello`和`world`而是`567`,因為`.`可以匹配任意字元,但不可以匹配換行
#為了要輸出正確的結果,要傳入改函式的預設引數`re.s`
text = re.findall('xx(.x?)xx',s,re.s)
#利用re.findall()函式返回的是乙個list集合而不是match,所以不可以使用.grout()來讀取分組
for each in d:
print(each)
#輸出結果為hello和world
python中的正規表示式
正規表示式是一種用來匹配字串的強有力的 它的設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,我們就認為它 匹配 了,否則,該字串就是不合法的。因為正規表示式也是用字串表示的,所以,我們要首先了解如何用字元來描述字元。在正規表示式中,如果直接給出字元,就是精確匹配。用 d可以匹配...
Python中的正規表示式
對應 abc 001 s r abc 001 加r字首,就不用考慮轉義的問題了。print re.match d d 010 12345 匹配成功返回乙個match物件,否則返回none.re.match 的常見寫法 test 輸入字串 if re.match 正規表示式 test print ok...
Python 中的正規表示式
複習下以前學習的正規表示式 r re.match abc bcd bcd print r sre.sre match object span 0,3 match bcd 貪婪符號 擴充套件表示法 分組的不捕獲模式,計算索引時會跳過這個分組 p.分組的命名模式,取此分組中的內容時可以使用索引也可以使用...