Python中的正規表示式

2021-07-27 17:01:39 字數 1769 閱讀 1701

在使用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.分組的命名模式,取此分組中的內容時可以使用索引也可以使用...