第一章 文字 re 正規表示式 用模式修改字串

2021-09-10 10:43:40 字數 1524 閱讀 4060

1.3.10 用模式修改字串

除了搜尋文字之外,re還支援使用正規表示式作為搜尋機制來修改文字,而且替換(replacement)可以引用模式中的匹配組作為替代文字的一部分。使用sub()可以將 乙個模式的所有出現替換為另乙個字串。

import re

bold = re.

compile

(r'\*(.*?)\*'

)text =

'make this **bold**. this **too**.'

print

('text:'

,text)

print

('bold:'

,bold.sub(r'\1'

,text)

)

可以使用向後引用的\num語法插入與模式匹配的文字的引用。

執行結果:

要在替換中使用命名組,可以使用語法\g。

import re

bold = re.

compile

(r'\*(?p.*?)\*'

)text =

'make this **bold**. this **too**.'

print

('text:'

,text)

print

('bold:'

,bold.sub(r'\g'

,text)

)

\g語法還適用於編號引用,只用這個語法可以消除組編號和外圍字面量數字之間的模糊性。

執行結果:

向count傳入乙個值可以限制完成的替換數。

import re

bold = re.

compile

(r'\*(.*?)\*'

)text =

'make this **bold**. this **too**.'

print

('text:'

,text)

print

('blod:'

,bold.sub(r'\1'

,text,count=1)

)

由於count為1,所以只完成了第乙個替換。

執行結果:

subn()的工作與sub()很相似,只是它會同時返回修改後的字串和完成的替換數。

import re

bold = re.

compile

(r'\*(?p.*?)\*'

)text =

'make this **bold**. this **too**.'

print

('text:'

,text)

print

('bold:'

,bold.subn(r'\g'

,text)

)

這個例子中搜尋模式有兩次匹配。

執行結果:

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

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

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

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

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

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