我想出了一个代码,它与前面三个句子的重复相匹配。(它可以通过重复模式扩展到任何最大重复句子数量。
(.*?\.)( .*?\.)?( .*?\.)? \1\2?\3?
示例用法:
string = 'Red apple. Green pepper. Yellow onion. Red apple. Green pepper. Yellow onion.'
output = re.sub(r'(.*?\.)( .*?\.)?( .*?\.)? \1\2?\3?', r'\1\2\3', string , flags=re.MULTILINE)
print(output) # 'Red apple. Green pepper. Yellow onion.'
例如Demo:'Red apple. Green pepper. Yellow onion. Red apple. Green pepper. Yellow onion.'
它也可以匹配一两个句子的重复。
例如Demo:'Red apple. Red apple.'
->输出'Red apple.'
例如Demo:'Red apple. Green pepper. Red apple. Green pepper.'
->输出'Red apple. Green pepper.'
你能建议一个优雅/通用的形式来使它与任何一个微小的重复句子匹配吗?
谢谢大家。
1条答案
按热度按时间qyswt5oh1#
将字符串拆分成句子并将其打印为一个集合:
输出:
是的,结果失去了周期。因为我们知道每个句子最初都是以句号结尾的,所以添加一个句号是很容易的。
或者,根本不使用正则表达式:
输出: