2014-05-08 42 views
0

我在文件中有以下文本。使用Visual Studio正則表達式刪除重複項

abc1 
x 
abc1 
y 
abc1 
z 
abc2 
x 
abc3 
x 
abc3 
y 

這裏我想替換下面的重複項,但仍保留下面的字母。

在簡單的我想輸出如下。

abc1 
x 
y 
z 
abc2 
x 
ab3 
x 
y 

請讓我知道我可以如何刪除這些重複在visual studio或任何其他工具使用正則表達式。我真的無法找到一種方法來做到這一點。即使是宏觀也可能有所幫助。

感謝

+0

你看着辦吧? – jessehouwing

回答

2

正則表達式可能是不適合這個問題的最佳解決方案,但與創造力是可以做到的:

(^\w{2,})(?<=^\1(\n\w)*\n\1$) 

替換爲:

<<empty string>> 

解釋:

  1. 查找包含字母,數字和長於1個字符的關鍵:(^\w{2,})
  2. 回頭看看相同的密鑰之前提到(?<= ...)
  3. 找到相同的密鑰,因爲我們之前匹配,是在同一行^\1
  4. 唯一跳過任何符合一個字符(\n\w)*
  5. 跳到我們剛讀\n\1$
關鍵

使用Visual Studio正則表達式(編輯器)是一個稍微複雜一點看來,這個工程:

(?:\r?\n)?(^\w{2,})(?:\r?\n)?(?<=^\1\r?\n(?:\w\r?\n)*\1) 

參見:

enter image description here

0

你可以讀你的文字轉換爲一組(在C++和Python)後輸出的關鍵。 cpp set reference

Python的例子

for i in set(x for x in open('1.txt').read().replace('\n' ,' ').split(' ') if x): 
    print(i) 
+0

任何幫助或示例代碼請 – user2423959