You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写grep正则表达式匹配含连续重复数字的行(空格无关)

解决方案

要匹配文件中存在连续重复数字(空格不影响匹配)的行,你可以使用以下grep命令:

grep -E '([0-9])\s*\1' input-file.txt

原命令的问题分析

你之前使用的grep -E '([0-9]+) \1' input-file.txt存在两个关键局限:

  • 它要求匹配一个或多个数字组成的完整序列,而非单个数字的重复,比如只有"123 123"这种整组重复的情况才会被匹配,无法捕获"999"或"33"这类单个数字连续重复的场景;
  • 强制要求重复序列之间必须有且仅有一个空格,既无法匹配无空格的连续数字重复,也不能兼容多个空格的情况。

正则表达式详解

([0-9])\s*\1的各部分作用:

  • ([0-9]):捕获单个0-9的数字,作为第一个捕获组;
  • \s*:匹配零个或多个空白字符(包括空格、制表符等,适配你的文件格式),实现"空格不影响匹配"的需求;
  • \1:引用第一个捕获组捕获的数字,确保前后是同一个数字。

匹配验证

针对你提供的测试文件:

  1. 第一行2999 1245 8765 2323:999中包含连续重复的9,会被匹配;
  2. 第二行4545 1213 1332 6543:1332中的33会被匹配;
  3. 第三行1234 4567 6789 0124:1234末尾的4与4567开头的4被空格隔开,符合匹配规则,会被匹配;
  4. 第四行1234 5678 9012 3456:没有任何单个数字重复(无论是否有空格),不会被匹配。

完全符合你的预期结果。

内容的提问来源于stack exchange,提问作者tijko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:28:13