2014-04-17 78 views
2

我想問一下egrep中的反向引用。Unix egrep命令如何創建一個匹配以下模式?

我有一個文件,它包含:

AA AA someothertext

,並有像77 77

如何使用反向引用匹配的模式「AA aa'和'77 77'?

我想:

egrep '(aa)\1' file.txt 

,它將匹配 'AA AA'。然後。我試圖替換 'AA' 與 '([A-ZA-Z0-9])\ 1',這產生:

egrep '(([a-zA-Z0-9])\1)\1' file.txt 

它不會工作。

我很感激,如果你可以幫忙!

回答

2

請記住,捕獲組通過其左括號進行索引:您在定義之前調用第一組。

((a)b)\1指的是(a)b\2a

爲了解決這個問題,你可以使用正確的索引:

(([a-zA-Z0-9])\2)\1 
+0

不明確的,如果模式是 「xx月xx」 或 「xx月xx」。如果你想匹配第一個,那麼它是'((a-zA-Z0-9))\ 2)\ 1'。 –

+0

@Robin謝謝!現在我明白了\ n的意思..完全! –

+0

很高興我能幫到你。 @MarkLakata:真的。由於第一個例子('(aa)\ 1')似乎完成了這項工作,我沒有修改正則表達式。 – Robin