Python 如何在re.sub()中为正则表达式搜索设置停止条件

Python 如何在re.sub()中为正则表达式搜索设置停止条件,python,regex,Python,Regex,我有一个文本块,我想从中删除短语 改编指基于作品的作品,或基于作品的cAt,以及 其他已存在的作品,如f翻译、狗狗改编、, 衍生作品、音乐的编排或对作品的其他修改 文学或艺术作品,或用于表演的唱片,包括 电影改编或任何 我想删除cAt和f之间、DOG和f之间或rugrats和f之间的任何文本。为了方便起见,我突出显示了文本框中的术语 每个短语cAt、DOG、rugrats、f前后都有一个空格 这是我的密码 clean = `TEXT SHOWN ABOVE` segment_start = ['

我有一个文本块,我想从中删除短语

改编指基于作品的作品,或基于作品的cAt,以及 其他已存在的作品,如f翻译、狗狗改编、, 衍生作品、音乐的编排或对作品的其他修改 文学或艺术作品,或用于表演的唱片,包括 电影改编或任何

我想删除cAt和f之间、DOG和f之间或rugrats和f之间的任何文本。为了方便起见,我突出显示了文本框中的术语

每个短语cAt、DOG、rugrats、f前后都有一个空格

这是我的密码

clean = `TEXT SHOWN ABOVE`
segment_start = [' cAt ', ' DOG ', ' rugrats ']
segment_end = ' f ' 

for start in enumerate(segment_start):
    clean = re.sub('{}.*{}{1}'.format(start, segment_end), ' ', clean)
我想退出

改编指基于作品的作品,或基于作品的cAt,以及 其他已存在的作品,如f翻译、狗狗改编、, 衍生作品、音乐的编排或对作品的其他修改 文学或艺术作品,或用于表演的唱片,包括 电影改编或任何

然后就这样结束了

改编指基于作品、翻译或表演的作品,包括 电影改编或任何

我的代码出错了。它查找段的开始,然后查找段的最后一个外观结束f,并删除其间的所有内容

它是这样做的

改编指基于作品的作品,或基于作品的cAt,以及 其他已存在的作品,如f翻译、狗狗改编、, 衍生作品、音乐的编排或对作品的其他修改 文学或艺术作品,或用于表演的唱片,包括 电影改编或任何

*是贪婪的重复:0或更多,尽可能多。这会让你的第一场比赛从猫到最后一个f抓取所有东西,不会留下任何东西给狗查询


使用*?而是:0或更多,尽可能少。这样,regexp将只满足于cAt和第一个f之间的位,DOG regex也将有它的一天。

我尝试在EnumerateSecgment_start:clean=re.sub'{}.*.{}.formatstart,segment_end',clean中启动EnumerateSecgment_start:clean=re.sub'{}.{}.formatstart,段{u-end',clean和for-start在枚举段{u-start:clean=re.sub'{}*?{}.formatstart,段{u-end',clean函数不再删除第一个应该删除的任何短语。不过我现在不在键盘上测试?其本身为“0或1”,不会在cAt和f之间延伸;在第三个例子中,你去掉了点,所以它的意思是“任意数量的猫,后面跟着f”。明白了{}.*{}.formatstart,段_-end正在打印0,'cAt'.*?1.“狗”。*?。我将segment_end放入一个与segment_start长度相同的列表中,并将循环改为for k,start它正在工作,没有读得足够近,并且相信您的代码实现了您声称的功能。删除枚举。