一、re模塊簡介
Python中的re模塊是正則表達式操作的API接口,為字符串模式匹配提供了強大的支持。普通字符串匹配也能通過re模塊的特殊字符實現高級的文本模式匹配,並方便地對字符串進行修改。
字符串替換時,可以使用re.sub()函數,其基本格式為:
re.sub(pattern, repl, string, count=0, flags=0)
其中,pattern表示要匹配的正則表達式,repl表示替換的內容,string表示輸入的字符串。count是要替換的次數,默認全部替換;flags是正則表達式的標誌,如IGNORECASE表示不區分大小寫進行匹配。
二、基本字符串替換操作
下面是一些基本的字符串替換操作,演示如何使用re.sub()函數進行替換。
1. 替換字符串中的字符:
import re
s = "hello world"
s = re.sub('l', 'X', s)
print(s) # heXXo worXd
2. 替換多個匹配項:
import re
s = "Our company number is 860-434-1212"
s = re.sub('\d', 'X', s)
print(s) # Our company number is XXX-XXX-XXXX
三、高級字符串替換操作
接下來是一些更高級的字符串替換操作,展示了如何使用re.sub()函數結合正則表達式進行複雜的文本模式匹配和替換。
1. 在文本中添加標籤:
考慮下面的文本,我們想要將其中的所有日期(如2019-01-01)都用<time>標籤進行標記:
import re
s = "Today is 2019-01-01. Tomorrow is 2019-01-02."
s = re.sub('(\d{4})-(\d{2})-(\d{2})', r'<time>\1年\2月\3日</time>', s)
print(s)
輸出:
Today is <time>2019年01月01日</time>. Tomorrow is <time>2019年01月02日</time>.
2. 根據匹配文本進行逐字替換:
有時候我們想要根據匹配到的文本進行逐字替換,例如將選手互相贈送禮物的場景(如A贈送B可愛的小熊)中的部分文本進行替換。
import re
s = "A贈送B可愛的小熊"
s = re.sub(r'([AB])(贈送)([AB])(.*?)$', r'\1向\3送出了\4', s)
print(s)
輸出:
A向B送出了可愛的小熊
3. 應用函數進行替換:
最後,我們展示如何使用函數對匹配到的文本進行替換,使用Python內置的函數及lambda函數。
import re
def process_word(match_obj):
word = match_obj.group(0)
return word.upper()
s = 'Hello, world!'
s = re.sub(r'\b\w+\b', process_word, s)
print(s) # HELLO, WORLD!
或者使用lambda函數進行替換:
import re
s = 'Hello, world!'
s = re.sub(r'\b\w+\b', lambda x: x.group(0).upper(), s)
print(s) # HELLO, WORLD!
四、總結
該文章介紹了如何在Python編程語言中使用re模塊(正則表達式)快速並且便捷地實現字符串替換。從基本的替換操作,到高級的複雜文本模式匹配和替換,re模塊為Python提供了強大的支持,使得開發者可以更加便捷地對字符串進行處理。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309021.html