假设我有一个字符串,“猫,猫,猫,狗,狗,狗,狗”。
为了将字符串替换为“cats and dogs”,我将使用什么正则表达式。即删除重复项。但是,该表达式只能删除彼此紧跟的重复项。例如:
“猫猫猫狗狗狗猫猫猫狗狗狗猫”
将返回:
“猫和狗和猫和狗”
最佳答案
用(\w+)\s+\1
替换$1
循环执行此操作,直到找不到更多匹配项为止。设置global
标志是不够的,因为它不能替换cats
中的第三个cats cats cats
正则表达式中的\1
指的是第一个捕获组的内容。
尝试:
str = "cats cats cats and dogs dogs dogs and cats cats and dogs dogs";
str = Regex.Replace(str, @"(\b\w+\b)\s+(\1(\s+|$))+", "$1 ");
Console.WriteLine(str);
关于c# - 如何摆脱正则表达式中的重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3014687/