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

2021-09-10 07:56:17 字數 1023 閱讀 5538

1.3.7.3 unicode

在python3中,str物件使用完整的unicode字符集,str的正規表示式處理會假設模式和輸入文字都是unicode.之前描述的轉義碼預設的也是按unicode定義。這些假設意味著模式\w+對單詞"french"和"français"都能匹配。要向python2中的預設假設那樣將轉義碼限制到ascii字符集,編譯模式或者呼叫模組級函式search()和match()時要使用ascii碼。

import re

text = u'français österreich'

pattern = r'\w+'

ascii_pattern = re.

compile

(pattern,re.ascii)

unicode_pattern = re.

compile

(pattern)

print

('text :'

,text)

print

('pattern :'

,pattern)

print

('ascii :'

,list

(ascii_pattern.findall(text)))

print

('unicode :'

,list

(unicode_pattern.findall(text)

))

其他轉義序列(\w,\b,\b,\d,\d,\s和\s)對ascii文字也會採用不同的處理方式。re不再通過查詢unicode資料庫來查詢各個字元的屬性,而是使用轉義序列標識的字符集的ascii定義。

執行結果:

text : français österreich

pattern : \w+

ascii : [『fran』, 『ais』, 『sterreich』]

unicode : [『français』, 『österreich』]

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

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

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

1.3.3 多重匹配 到目前為止,示例模式都只是使用search 來查詢字面量文字字串的單個例項。findall 函式會返回輸入中與模式匹配而且不重疊的所有子串。import re text abbaaabbbbaaaaa pattern ab for match in re.findall pat...

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

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