将同一字符串与行的前 3 个位置的组合词匹配

将同一字符串与行的前 3 个位置的组合词匹配

我使用这个正则表达式来删除类似的行

搜索模式: ^(.{5,})(.*)$\R\1.*
替换模式: $1$2

例如像这样的行

alfax jack
alfax meta

正则表达式给我这个输出行

alfax jack

我需要一个正则表达式来打印其他内容。我试着解释一下,我有

alfax gamma one
alfax gamma second

我需要这个输出

alfax gamma

换句话说,我认为“相同的字符串”是复合词,而不仅仅是相似的行。相同的复合词应该位于行的前 3 个位置内。

有这个的正则表达式吗?

答案1

如果我很好地理解了你的需求,那么这个就可以了:

  • Ctrl+H
  • 找什么:^((?:\w+\h+){2,3})(.*)$\R\1.*
  • 用。。。来代替:$1
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

解释:

^           # beginning of line
  (           # group 1
    (?:         # non capture group
      \w+         # 1 or more word character
      \h+         # 1 or more horizontal space
    ){2,3}      # end group, must appear 2 or 3 times
  )           # end group 1
  (.*)        # group 2, 0 or more any character but newline
$           # end of line
\R          # any kind of linebreak
\1          # backreference to group 1
.*          # 0 or more any character but newline

替代品:

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容