2011-01-20 41 views
3

我有我傳遞給egrep命令在單詞表中的以下示例表達式:有沒有比較正則表達式反向引用的方法?

^([a-z])lu([a-z])\2er$ 

我想進一步規定的\ 1和\ 2中的內容必須是不同的,例如這將匹配「bluffer」而不是「boulber」。有沒有辦法將它建立到表達式本身中(所以我可以從egrep或類似的東西中得到我的結果),還是我堅持用一些真正的語言來支持正則表達式並手動檢查我的組是否都是一樣?

+0

對不起,我現在只是看到你從一開始就包括egrep在你的問題!我已經刪除了我的答案。 – 2011-01-20 21:16:26

+0

你並不需要!我沒有與egrep結婚,這正是我在命令行上試驗過的。 – twon33 2011-01-20 21:20:11

回答

2

你需要更強大的東西。正則表達式不能跟蹤狀態。 Sed可能可以做你需要的東西。

3

您可以在第二個匹配組前添加負面預覽(?!\1)。下面的正則表達式:

([a-z])lu(?!\1)([a-z])\2er 

匹配"bluffer"但不"blubber"。如果兩個組匹配相同數量的字符,這隻能正常工作。