Python學習筆模式匹配與正則表達式之用sub()方法替換字符串


隨筆記錄方便自己和同路人查閱。

#------------------------------------------------我是可恥的分割線-------------------------------------------

  正則表達式不僅能找到文本模式,而且能夠用新的文本替換掉這些模式。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)

  運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM