在比赛前删除一个单词和一个单词

时间:2018-01-12 10:23:52

标签: c# .net regex

匹配前的一个单词可以是一组任何符号......例如“D.E,F​​ /".

我有正则表达式:

@"\s*[\w/]+\s+XXX"

输入示例:这是KKK M.D,D / xXx PPP
输出示例:这是KKK PPP

所以我需要在XXX之前删除1个单词,同时删除XXX(忽略大小写)。

1 个答案:

答案 0 :(得分:2)

请注意,D.E,F/不是单词,而是一系列非空白字符。 [\w/]+是一个匹配单词和/字符的字符类,如果你打算在这里进一步添加字符,那么这个模式可能会变得太长而且很麻烦。

使用\S+模式匹配除空白之外的任何1个字符似乎更方便:

\s*\S+\s+XXX

请参阅regex demo。使用RegexOptions.IgnoreCase执行不区分大小写的匹配,或在模式前添加(?i)内联修饰符。

在C#中:

var result = Regex.Replace(s, @"(?i)\s*\S+\s+XXX", string.Empty);

模式详情

  • (?i) - 不区分大小写的内联修饰符
  • \s* - 0+空白字符
  • \S+ - 1 +非空白字符
  • \s+ - 1+空白字符
  • XXX - XXX子字符串。