正则表达式无法匹配特定的数字模式

时间:2015-07-03 04:07:37

标签: regex bash shell

我正在努力尝试编写正则表达式以匹配在字符串中查找重复数字的模式,例如

1234456781234 45678 在这种情况下,即使第二种情况下有空格,也会重复4次。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

另一个Month Price Jan 10 Feb 20 Mar 30 ............ Dec 50 解决方案:

grep

概念证明:

egrep '([0-9]) *\1'

答案 1 :(得分:1)

不知道是否有更优雅的方式来做到这一点,但以下工作:

egrep --color "0 *0|1 *1|2 *2|3 *3|4 *4|5 *5|6 *6|7 *7|8 *8|9 *9" <<< "1234 45678"

匹配:123 4 4 5678

答案 2 :(得分:0)

您使用对捕获组的反向引用:

(\d).*\1

Demo

如果您希望匹配仅在(无其他数字或字符)之间存在空格时可以执行以下操作:

(\d)[ ]*\1

Demo

哪个也适用于egrep

$ echo 1234 45678 | egrep --color '(\d)[ ]*\1' 
1234 45678

和Posix:

$ echo 1234 45678 | egrep '([[:digit:]])[[:blank:]]*\1' 
1234 45678