我有一个字符串“ 这是一个男孩和男孩和女孩或两个人和笔 ”我想替换所有这些and
一个and
。这可以通过使用Regex来完成吗?
我正在使用这个正则表达式,但它失败了:
@"\b(?<word>\w+)\s+(\k<word>)\b"
答案 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 ");