使用正则表达式在句子中相邻地重复“和”?

时间:2011-07-20 07:09:13

标签: c# regex

我有一个字符串“ 这是一个男孩和男孩和女孩或两个人和笔 ”我想替换所有这些and一个and。这可以通过使用Regex来完成吗?

我正在使用这个正则表达式,但它失败了:

@"\b(?<word>\w+)\s+(\k<word>)\b"

3 个答案:

答案 0 :(得分:3)

如果你的意思是重复的话(正如你帖子中的正则表达式所暗示的那样):

resultString = Regex.Replace(subjectString, @"\b(\w+)(?:\s+\1)+\b", "$1");

<强>解释

\b    # Assert start at a word boundary
(\w+) # Match a word
(?:   # Try to match...
 \s+  # Whitespace and
 \1   # the same word as before
)+    # one or more times
\b    # Assert end at a word boundary

如果只想and替换:

resultString = Regex.Replace(subjectString, @"\b(?:and\s+){2,}", "and ");

答案 1 :(得分:1)

这样的事情可能是:@"(\band\s+){2,}"(尽管未经测试)。或者,既然您正在搜索/替换,@"(\band\s+)+"

答案 2 :(得分:1)

Regex.Replace(text, @"(\band\s+)+", "and ");