2015-03-25 34 views
1

我想要刪除一行中的重複單詞。使用正則表達式刪除一行中的重複單詞

例如:

arraythis1, XdashedSmall, Small, Medium, Large, XdashedLarge, XdashedSmall, Small, Medium, Large, XdashedLarge 

我要刪除所有重複的項目,把行成這樣:

arraythis1, XdashedSmall, Small, Medium, Large 

我的正則表達式是這樣的:\w(\D+)(?:,\s+\1\b,)+/gm,見regex101

+0

什麼是你的實際輸入和預期的輸出? – 2015-03-25 05:30:27

+0

但是在您的輸出中有小字符重複....:/ – 2015-03-27 05:18:05

回答

1
(\b[^,]+),(?=.*\b\1\b) 

嘗試this.Replace。

https://regex101.com/r/sJ9gM7/6

+0

您可能想要使用'(\ b [^ \ n,] +),(?=。* \ b \ 1 \ b)',以避免將新行添加到要刪除的重複項目。 – timgws 2015-03-25 05:58:51

0

我不知道您的具體投入,但鑑於這個例子中,如果你只是想刪除第一個「arraythis1」,你可以使用正則表達式:

^[^\,]* 
  • 第一胡蘿蔔(「^」)表示「從行頭開始」。
  • 方括號(「[]」)表示匹配列表中不存在的單個字符(位於方括號中)。
  • 我通過使用列表前面的另一個胡蘿蔔來反轉方括號(而不是匹配單個字符,不匹配單個字符)。
  • 最後,我使用星號(「*」)來確保我獲得所有不是的逗號,確保我捕獲所有這些字符。

然後,最後,要做出最後一個正則表達式,您需要刪除剩餘空間(或空格)。

^[^\,]*,\s+ 

empty string。看到演示https://regex101.com/r/oV2aO0/2

+0

不刪除'arraythis1,'查看我的輸出,那會是結果 – j2query 2015-03-25 05:40:51

+0

@ j2query您使用的是什麼語言?這是你不應該使用正則表達式的東西。 – timgws 2015-03-25 05:48:48

+0

即時通訊使用jquery – j2query 2015-03-25 05:50:43

0

我想你應該試試這個

var words = new HashSet<string>(); 
string text = "arraythis1, XdashedSmall, Small, Medium, Large, XdashedLarge, XdashedSmall, Small, Medium, Large, XdashedLarge"; 
text = Regex.Replace(text, "\\w+", m => 
       words.Add(m.Value.ToUpperInvariant()) 
        ? m.Value 
        : String.Empty); 
相關問題