簡體   English   中英

Python正則表達式,如何從字符串中刪除所有匹配項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM