我想在一个单词列表中找到,每个单词都有至少3倍于同一个字母。为了实现这一点,我做了.*(\w).*\1.*\1.*\1.*
并且您可以在这里测试它http://www.regexplanet.com/advanced/java/index.html,但我不知道如何将它放入我的zgrep
命令中。
如何在zgrep
命令中插入此正则表达式?
最佳答案
两个音符:
不需要用.*
匹配行的开头和结尾,因为允许部分匹配\w
匹配NFA正则表达式模式中的字母、数字和下划线,在POSIX中,使用[[:alnum:]_]
更安全
要在posix bre模式中形成捕获组,请使用转义括号,\(...\)
。
因此,使用
zgrep '\([[:alnum:]_]\).*\1.*\1.*\1' a.gz
或者,稍微收缩一下,因为它看起来有点多余,有三个连续的
.*\1
子模式:zgrep '\([[:alnum:]_]\)\(.*\1\)\{3\}' a.gz
关于regex - 如何在zgrep/zcat命令中指定正则表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58409905/