2014-10-20 177 views
4

這種模式(與mis標誌)第一次出現不斷的重複行中最後出現刪除重複行

^(\w+)\R(?=.*?^\1$) 

想在這個example
如何讓第一次出現而是使用正則表達式只
例子

Apple 
Banana 
TEST 
apple 
Cherry 
banana 
bananA 
Var 
cherry 
applE 
cherrY

結果:

Apple 
Banana 
TEST 
Cherry 
Var

這裏的重點是保持條目的原始順序並刪除重複項。

+0

你想達到什麼目的?你能否將這個例子與預期的輸出一起發佈並附帶一些解釋? – 2014-10-20 02:23:08

+0

我不認爲這是可能的替換所有操作(這是可能的,當字符串從右到左掃描 - 可以在.NET中打開)。給定'ABAB',如果你想刪除第二個A,你需要消耗第一個B,這將防止B被刪除。順便說一下,你可能需要這個正則表達式:http://regex101.com/r/rP4lH9/2 – nhahtdh 2014-10-20 02:23:23

+0

正如[nhahtdh](http://stackoverflow.com/users/1400768/nhahtdh)所說,你不能用純PCRE做到這一點。你在用什麼語言?我認爲這可以在沒有正則表達式或部分使用正則表達式的情況下完成。 – HamZa 2014-10-29 09:36:09

回答

0

你可以這樣做:

^(\w+\R)([\s\S]+?\R)\1 

Remplace有:

\1\2 

這工作得很好。但是你必須不止一次運行腳本。如果你不能使用循環。 運行,運行運行,直到列表長度不改變...