我有一段文字,我想从中删除短语。
“改编”是指基于该作品的作品,或
cAt
基于该作品的作品, 其他先前存在的作品,例如f
翻译,DOG
改编, 衍生作品,音乐编排或其他 文学或艺术作品,录音制品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
或表演,包括 电影改编或任何DOG
改编, 衍生作品,音乐编排或其他 文学或艺术作品或录音制品f
最后以这个
“改编”是指基于作品或翻译或表演的作品,包括 电影改编或任何
我的代码出错。它先找到段的开头,然后再找到段结尾f
的最后一次出现,并删除段之间的所有内容。
做到这一点
“改编”是指基于该作品的作品,或
或表演,包括 电影改编或任何cAt
基于该作品和 其他先前存在的作品,例如f
翻译,DOG
改编, 衍生作品,音乐编排或其他 文学或艺术作品或录音制品f
答案 0 :(得分:1)
*
是贪婪的重复:“ 0或更多,越多越好”。这样一来,您的第一场比赛就可以抢夺从cAt
到最后f
的一切,而对DOG
查询则一无所获。
使用*?
代替:“ 0或更多,尽可能少”。这样,正则表达式将只用cAt
和第一个f
之间的位就可以满足,并且DOG
正则表达式也可以使用。