删除重复的单词或短语的正则表达式 NO 以逗号或句点分隔

Regular expression to delete repeated words or phrases NO separated by commas or periods

****删除重复单词或短语的正则表达式,中间没有逗号

嗨!

正在尝试清理一些包含重复单词和短语的长字幕文件。我在这里得到了一个很好的解决方案来帮助重复的单词或短语 以逗号分隔 ,但我发现了更多类似的重复,它们 没有以逗号分隔 .

我不得不用线条来展示我的例子,因为这会破坏所有的格式!

下面是我需要修改的例子,没有用逗号分隔的单词和短语:


约翰,我会照顾我儿子的

我会负责儿子的教育。


你不应该

应该在巴黎?


哦,亲爱的,你为什么要去

否认?否认它?我们都知道。


等一下。我们过得怎么样

我们要用这个吗?


当然,那看起来像微波炉

一个微波炉,一个高压锅。


嗯,比如说男团

是一支很弱的队伍。一支很弱的队伍。


这里也一样,在普通对话框中添加了一些额外的破折号(一行中有两个破折号,而不是每行只有一个破折号):


-没有? -孩子呢?

-不,我有我的玩具


我应该如何解决这个问题?

谢谢!

我大概是overthinking/overcomplicating这个,但是用Notepad++,试试:

(?i)\b(.*?)([,.?!])(?:\h)*\h([,.?!])(?:\h(?=\h))?

替换为</code>。看网上<a href="https://regex101.com/r/NDKLum/1" rel="nofollow noreferrer">demo</a></p> <hr /> <ul> <li><code>(?i) - 匹配余数不区分大小写。

  • \b - 单词边界。
  • (.*?) - 第一个捕获组,具有除换行符以外的任何字符的惰性匹配模式;
  • ([,.?!]) - 第二个捕获组包含您提到的 4 个定界符中的任何一个。
  • (?: - 打开一个非捕获组:
    • \h - 匹配水平 space 字符以及在第 1 和第 2 个捕获组中完全匹配的字符。
    • )* - 关闭非捕获组,匹配0+次。
  • \h - 匹配另一个水平白色space和第一组中捕获的内容。
  • ([,.?!]) - 第三个捕获组与我们的最终定界符。
  • (?: - 打开第二个非捕获组:
    • \h(?=\h) - 水平白色space,对我们第一个捕获组的反向引用和对另一个白色space.
    • 的正前瞻
    • )? - 关闭第二个非捕获组并使其可选。

  • 在记事本++中:


    我觉得有人 can/will 想出了更干净的东西 =)

    您可以搜索 \b(.+?\b)(?=[, ])(+) 并替换为空白。

    更换前

    替换后