隨筆記錄方便自己和同路人查閱。
#------------------------------------------------我是可恥的分割線-------------------------------------------
正則表達式不僅能找到文本模式,而且能夠用新的文本替換掉這些模式。Regex對象的 sub()方法需要傳入兩個參數。
第一個參數是一個字符串,用於取代發現的匹配。第二個參數是一個字符串,即正則表達式。sub()方法返回替換完成后的
字符串。
#------------------------------------------------我是可恥的分割線-------------------------------------------
示例代碼:
#! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re namesRegex = re.compile(r'Agent \w+')#定義正則表達式 #第一個參數是想要被替換為的內容,第二個參數是檢查的文本 print(namesRegex.sub('CENSORED', 'Agent Alice gave the secret documents to Agent Bob.'))
運行結果:
有時候,你需要使用匹配的文本本身,作為替換的一部分。在sub()的第一個參數中,可以輸入\1、\2、\3.....。表示“在替換中輸入分組1、2、3.....”的文本。
假如,假定想要隱去密探的姓名,只顯示他們的姓名的第一個字母。要做到這一點,可以使用正則表達式Agent (\w)\w*,傳入 r'\1****'作為 sub()的第一個參數。
字符串中的\1 將由分組 1 匹配的文本所替代,也就是正則表達式的(\w)分組。
示例代碼:
#! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #定義表示為Agent+空格,后面的所有字符串,一致到空格、換行、制表符為止,為分組1的內容的正則表達式 agentNamesRegex = re.compile(r'Agent (\w)\w*') #sub()第一個參數為要替換的內容1表示為正則表達式的分組1 mo = agentNamesRegex.sub(r'\1****','Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.') print(mo)
運行結果: