首页 > 解决方案 > 用正则表达式替换进行它的单词

问题描述

我有两个这样的字符串:

word=list()
word.append('The.Eternal.Evil.of.Asia.1995.DVDRip.x264.AC3')
word.append('Guzoo.1986.VHSDVDRiP.x264.AC3.HS.ES-SHAG')

我想删除从 VHSDVDRIP 和 DVDRIP 开始的单词。所以从 The.Eternal.Evil.of.Asia.1995.DVDRip.x264.AC3 到 The.Eternal.Evil.of.Asia.1995。和 Guzoo.1986.VHSDVDRiP.x264.AC3.HS.ES-SHAG 到 Guzoo.1986。

我尝试了以下方法,但它不起作用:

re.findall(r"\b\." + 'DVDRIP' + r"\b\.", word)

标签: regexpython-2.7

解决方案


如果你想用一个空字符串替换我猜的那些实例,也许这个带有i标志的表达式可能有效:

import re

regex = r"(?i)(.*)(?:\w+)?dvdrip\W(.*)"

test_str = """
The.Eternal.Evil.of.Asia.1995.DVDRip.x264.AC3
Guzoo.1986.VHSDVDRiP.x264.AC3.HS.ES-SHAG
"""

subst = "\\1\\2"

print(re.sub(regex, subst, test_str))

输出

The.Eternal.Evil.of.Asia.1995.x264.AC3
Guzoo.1986.VHSx264.AC3.HS.ES-SHAG

该表达式在regex101.com的右上角面板上进行了说明,如果您希望探索/简化/修改它,并且在此链接中,您可以查看它如何与一些示例输入匹配,如果您愿意的话。


推荐阅读