regex - 如何在 zgrep/zcat 命令中指定正则表达式?
问题描述
我想在单词列表中找到每个单词中至少有 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
推荐阅读
- django - 用于结合 Django 和社交帐户的 Social Oauth2 休息框架的实现
- vb.net - MailItem 上的重复保存操作导致异常 - 可能是由于内联回复功能
- macos - 在 Mac 上安装 Python3.6 和 Python3.7
- android - 地理位置到 Android 上的 webview
- regex - Chrome 开发人员使用正则表达式搜索文件
- databricks - 我们可以将现有的 AWS EC2 实例与 Databricks 一起使用吗?
- java - 条件映射 ((condition) ? get-this : get-that) 与 Org.ModelMapper
- amazon-dynamodb - 插入删除、dynamoDb 并检查 SpringBoot
- python - 使用 Python 查询页面对象模型
- asynchronous - 等到 openlayers 5 geolocation 返回一个值