使用正则表达式删除行中的重复单词

时间:2015-03-25 05:28:47

标签: regex

我想删除一行中的重复字词。

例如:

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

我想删除所有重复的项目,将该行转换为:

arraythis1, XdashedSmall, Small, Medium, Large

我的正则表达式是这样的:\w(\D+)(?:,\s+\1\b,)+/gm,请参阅regex101

3 个答案:

答案 0 :(得分:1)

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

试试这个。empty string。见。演示。

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

答案 1 :(得分:0)

我不确定您的确切输入,但在此示例中,如果您只想删除第一个" arraythis1",则可以使用此正则表达式:

   ^[^\,]*
  • 第一个胡萝卜(" ^")说"从行的前面开始"。
  • 方括号(" []")表示匹配列表中不存在的单个字符(位于方括号内)。
  • 我通过使用列表前面的另一个胡萝卜来反转方括号(而不是匹配单个字符,不匹配单个字符)。
  • 最后,我使用星号(" *")确保我通过确保捕获它们来获取的所有字符所有

最后,要制作正则表达式的最后一个,您需要删除剩余的空格(或空格)。

^[^\,]*,\s+

请参阅https://regex101.com/r/oV2aO0/2

答案 2 :(得分: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);