如何找到至少 30 个数字的重复序列?
数据样本
2.3758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840546697038724373576309794988610478359908883826879271070615034168564920273348519362186788154897494305239179954441913439635535307517084282460136674259681093394077448747152619589977220956719817767653758542141230068337129840547
我在 Vim 中的尝试
:g/\(\d\{4}\)\[^\1\]\1/
|
|----------- Problem here!
我不知道你怎么能否定第一个 glob。
最佳答案
首先,要找到你的重复号码,你可以使用这个简单的搜索:
/\(\d\{5\}\).\{-}\1
此搜索查找 5 个数字的重复项。不幸的是,vim 从 5 位数字的开头到重复的结尾突出显示 - 包括中间的每个数字 - 这使得很难看到 5 位数字是什么。另外,因为你的数字序列重复了很多,所以整个事情都被突出显示,因为从头到尾都有重复。
您可能会发现使用 :set incsearch
并输入 /\(\d\{5\}\) 会更有用。\{-}\1
或 /\(\d\{5\}\)\ze.\{-}\1
不按回车键,这样您就可以看到数字是什么。
这个命令可能对你更有用:
:syn region repeatSection matchgroup=Search start=/\z(\d\{30}\)/ matchgroup=Error end=/\z1/ oneline
这将以黄色(第一次出现)或红色(重复出现时)突出显示 30 位数字序列。 注意,这仅适用于单行文本(多行是不可能的)。
关于regex - 通过 Vim 的 Regex 和 globbing 查找重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532456/