regex - 通过 Vim 的 Regex 和 globbing 查找重复

标签 regex vim glob

如何找到至少 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/

相关文章:

Python检查目录中具有特定名称的所有文件

python - 在 Python 中使用正则表达式获得和平的数字

vim - 如何将前导空格转换为制表符?

vim - vimrc 中使用 Alt 的任何映射都不起作用

python - glob() 排除子目录

php - 使用 php 查找损坏的符号链接(symbolic link)

Java 检查字符串中的逗号和空格

python - 如何使用正则表达式提取子字符串? (屏幕抓取)

java - Java中从行号找出方法名?

vim - Vim逗号命令键