[英]Python regex, how to delete all matches from a string
我有一個正則表達式模式列表。
rgx_list = ['pattern_1', 'pattern_2', 'pattern_3']
我正在使用一個函數循環遍歷列表,編譯正則表達式,並應用findall
來獲取匹配的術語,然后我想要一種從文本中刪除所述術語的方法。
def clean_text(rgx_list, text):
matches = []
for r in rgx_list:
rgx = re.compile(r)
found_matches = re.findall(rgx, text)
matches.append(found_matches)
我想做一些像text.delete(matches)
這樣的事情,以便從文本中刪除所有匹配項,然后我可以返回清理后的文本。
有誰知道如何做到這一點? 我當前的代碼將只為每個圖案的一個匹配工作,但文本可能具有相同的圖案的多個發生和我想消除所有的比賽。
使用sub
將匹配的模式替換為空字符串。 無需先單獨找到匹配項。
def clean_text(rgx_list, text):
new_text = text
for rgx_match in rgx_list:
new_text = re.sub(rgx_match, '', new_text)
return new_text
對於簡單的正則表達式,您可以使用“|”將表達式組合在一起。 有一些在堆棧溢出時使用OR組合正則表達式的示例。
對於非常復雜的正則表達式,我會遍歷正則表達式列表。 你可以從組合復雜的正則表達式中獲得超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.