通过 Vim 的正则表达式和通配符查找重复

Léo*_* 준영 3 regex vim glob

如何找到至少 30 个数字的重复序列?

数据样本

2.3758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840547
Run Code Online (Sandbox Code Playgroud)

我在 Vim 中的尝试

:g/\(\d\{4}\)\[^\1\]\1/
                |
                |----------- Problem here!
Run Code Online (Sandbox Code Playgroud)

我不知道你如何能够否定第一个 glob。

too*_*php 5

首先,要查找重复号码,您可以使用以下简单搜索:

/\(\d\{5\}\).\{-}\1
Run Code Online (Sandbox Code Playgroud)

此搜索发现 5 个数字的重复。不幸的是,vim 从 5 位数字的开始到重复的结束都突出显示 -包括中间的每个数字- 这使得很难看出 5 位数字是什么。另外,由于您的数字序列重复次数太多,因此整个事情都会突出显示,因为自始至终都有重复。

:set incsearch您可能会发现使用和键入/\(\d\{5\}\).\{-}\1/\(\d\{5\}\)\ze.\{-}\1 不按 Enter 键更有用,这样您就可以看到数字是什么。

这个命令可能对你更有用:

:syn region repeatSection matchgroup=Search start=/\z(\d\{30}\)/ matchgroup=Error end=/\z1/ oneline
Run Code Online (Sandbox Code Playgroud)

这将以黄色(第一次看到)或红色(重复出现时)突出显示 30 位数字的序列。请注意,这仅适用于单行文本(不可能是多行)。