python學習筆記二(正規表示式)

2021-06-21 17:01:57 字數 1724 閱讀 3452

在爬取網頁資訊的時候,是否是用迴圈擷取字串的方法?至少我之前是這麼做的。我比較懶,直接在字串裡搜關鍵字、用分片拿到想要的資訊,想到要寫正規表示式就有點矗。今天看了下正規表示式,小小的總結下。今天就不講怎麼寫正規表示式了,得依照需求來(自己寫的正則曾經被人鄙視過),今天的主題是怎麼用python的re模組。

個人理解的正規表示式的執行流程是這樣的:編寫正規表示式-->compile成pattern物件-->呼叫match、search、findall等方法匹配文字-->得到結果。

1、compile

正則引擎會將字串形式的正規表示式編譯成pattern物件,可選擇flag的引數,指定搜尋時的一些規則,如忽略大小寫等。

2、match

match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]),該方法和後面的幾個方法一樣,都有兩種傳參形式。直接將正規表示式傳入的時候,可以減少compile這一行**,編譯過程在matc方法內完成。不多說,上**

import re

m = re.match(r'(\w+) (\w+)(?p.*)', 'hello world!')

print "m.string:", m.string

print "m.re:", m.re

print "m.pos:", m.pos

print "m.endpos:", m.endpos

print "m.lastindex:", m.lastindex

print "m.lastgroup:", m.lastgroup

print "m.group(1,2):", m.group(1, 2)

print "m.groups():", m.groups()

print "m.groupdict():", m.groupdict()

print "m.start(2):", m.start(2)

print "m.end(2):", m.end(2)

print "m.span(2):", m.span(2)

print r"m.expand(r'\2 \1\3'):", m.expand(r'\2 \1\3')

該方法返回乙個match物件,group()可以返回匹配到的字串,groups()則返回乙個元組,包含各組匹配到的字串。

另外,search這個方法跟match一樣返回乙個match物件,感覺用法差不多。但兩者有本質的區別:

match函式只檢測是不是在string的開始位置匹配,search會掃瞄整個string查詢匹配。

3、findall

這個可能是我用的最多的乙個方法,以列表的形式返回正規表示式匹配到的所有字串。

import re

p = re.compile(r'\d+')

print p.findall('one1two2three3four4')

### output ###

# ['1', '2', '3', '4']

通常我會用search方法去看某文字是否包含乙個正則對應的字串,寫爬蟲的時候可能用到findall對多一些,至於其他的方法這裡就不介紹了。

小結

總結後發現:只要花心思看了,一切都會變簡單;如果不敢嘗試新的東西,則會停滯不前!

Python學習筆記二 正則

python中的正規表示式 通過re模組實現 常用來指定乙個字符集 元字元在字符集中不起作用 補集匹配不在區間範圍內的字元。匹配行首。除非設定multline標誌,它只是匹配字串的開始,在multline模式裡,它也可以直接匹配字串中的每個換行。匹配行尾,行尾被定義為要麼是字串尾,要麼是乙個換行字元...

正則表達學習筆記

b代表字串必須以b開頭 3 代表必須以3結尾 代表任意字元 代表前面字元可以重複任意多次 1 代表1至少出現一次 w.w w與w中間的字元出現2次 最少3次 最少3次,最多6次 import re line wuwei123 regex str w.3 if re.match regex str,l...

python正則表達學習

python替換 主要是利用 python 的正則表達,python的正則表達功能比較強大。我就介紹下我經常用的幾個方法。可能說的詳細,如果要深入研究的話。還是 要去看下python的文件了.廢話不多說。馬上開始介紹 一般我會用re.compile來建立乙個正則物件。python 文件上介紹好象這個...