Python正则表达式,如何从字符串中删除所有匹配项

egg*_*man 10 python regex

我有一个正则表达式模式列表.

rgx_list = ['pattern_1', 'pattern_2', 'pattern_3']
Run Code Online (Sandbox Code Playgroud)

我正在使用一个函数循环遍历列表,编译正则表达式,并应用a 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)
Run Code Online (Sandbox Code Playgroud)

我想做一些类似的text.delete(matches)事情,所有的匹配将从文本中删除,然后我可以返回清理的文本.

有谁知道如何做到这一点?我当前的代码将只为每个图案的一个匹配的工作,但文本可能有不止一个相同的模式的发生和我想消除所有的比赛.

Mat*_*t S 12

使用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
Run Code Online (Sandbox Code Playgroud)