假设我有一个字符串,“猫,猫,猫,狗,狗,狗,狗”。

为了将字符串替换为“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/

10-11 18:47