第一章 文字 re 正規表示式 多重匹配

2021-09-10 06:39:17 字數 888 閱讀 8001

1.3.3 多重匹配

到目前為止,示例模式都只是使用search()來查詢字面量文字字串的單個例項。findall()函式會返回輸入中與模式匹配而且不重疊的所有子串。

import re

text =

'abbaaabbbbaaaaa'

pattern =

'ab'

for match in re.findall(pattern,text)

:print

('found '

.format

(match)

)

執行結果:

found 『ab』

found 『ab』

finditer()返回乙個迭代器,它會生成match例項,而不是像findall()那樣返回字串。

import re

text =

'abbaaabbbbaaaaa'

pattern =

'ab'

for match in re.finditer(pattern,text)

: s = match.start(

) e = match.end(

)print

('found at :'

.format

(text[s:e]

,s,e)

)

這個例子同樣會找到ab的兩次出現,match例項顯示了它們在原輸入字串**現的位置。

執行結果:

found 『ab』 at 0:2

found 『ab』 at 5:7

第一章 文字 re 正規表示式 限制搜尋

1.3.5 限制搜尋 有些情況下,可以提前知道只需要搜尋整個輸入的乙個子集,在這些情況下,可以告訴re限制搜尋範圍從而進一步約束正規表示式匹配。例如,如果模式必須出現在輸入開頭,那麼使用match 而不是search 會錨定搜尋,而不必顯示地在搜尋模式中包含乙個錨。import re text th...

第一章 文字 re 正規表示式 搜尋選項 3

1.3.7.3 unicode 在python3中,str物件使用完整的unicode字符集,str的正規表示式處理會假設模式和輸入文字都是unicode.之前描述的轉義碼預設的也是按unicode定義。這些假設意味著模式 w 對單詞 french 和 fran ais 都能匹配。要向python2...

第一章 文字 re 正規表示式 利用模式拆分

1.3.11 利用模式拆分 str.split 是分解字串來完成解析的最常用的方法之一。不過,它只支援使用字面量只作為分隔符。有時,如果輸入沒有一致的格式,那麼就需要有乙個正規表示式。例如,很多純文字標記語言都把段落分隔符定義為兩個或多個換行符 n 在這種情況下,就不能使用str.split 因為這...