2017-01-09 57 views
1

问题:我想匹配那些包含两个数字的字符串,它们的位置是随机的,数字应该匹配2次。为了更好地理解我的问题正则表达式:找到字符串中数字的出现

例子:

3abc3 
a22de 
b7abc7a 

对于这些字符串必须match.If一个字符串包含两个数字,但它们是不同的,那么它不应该匹配。

例子:

3abcd2不应该匹配 3abc3 - >应该匹配

我尝试使用{N},但它没有帮助,因为它认为这两个数如下对方。

+0

'^ *(\ d)* \ 1 * $'使用捕获组找到第一个数字,然后再次参考该捕获组。 [DEMO](https://regex101.com/r/LZTJVl/1) –

+0

我使用正则表达式egrep – Zsombi

+1

数字或数字? – Aaron

回答

2

您可以使用此grep

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

3abc3 
a22de 
b7abc7a 

关于这个表达式:。

([0-9]) # match and capture any digit in group #1 
.*  # match 0 or more of any character in between 
\1  # using back-reference \1, make sure we have same digit as in group #1 
+1

这个答案很快。而且Aaron说的是对的,你应该改变它。 – Zsombi

+0

我认为3a0c3会匹配这个正则表达式,它不应该。 – aurya

+0

如果它不匹配'3a0c3'那么OP应该澄清。如果你不想匹配'3a0c3',那么使用'grep -E'([0-9])[0-9] * [^ 0-9] * [0-9] * \'1'文件' – anubhava

相关问题