2017-01-09 106 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

相關問題