我使用正则表达式删除字符串中的重复单词

时间:2017-06-04 04:43:42

标签: java regex duplicates

但它删除了空格。我不想删除空格!我该怎么办?

原文

  

喜欢这部电影,如此 好的好   好

删除重复项

  

喜欢这部电影,它是 soso goodgood

这是我的代码:

 String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1$1");

5 个答案:

答案 0 :(得分:1)

正如Dawood ibn Kareem在评论中指出的那样,如果你想在单词之间留一个空格,为什么不在你的替换模式中添加一个空格,如下所示:

String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1 $1");

答案 1 :(得分:0)

您的代码是正确的,但您只需将$1$1替换为$1

编辑: Dawood ibn Kareem在评论中也提到了这一点。

答案 2 :(得分:0)

/**
 *
 * @author Md. Amran Hossain
 */
public class DuplicateWordRemove {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    String s = "like like like";
    // TODO code application logic here
    String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1");
    System.out.println(""+result);
}

}

输出

答案 3 :(得分:0)

试试这个。

CFLAGS

答案 4 :(得分:0)

更新了答案

很抱歉发布第二个答案,但我只想确定您收到此答案的通知。

String h = s.replaceAll("(?i)\\b([a-z]+)\\b((?:\\s+\\1\\b)+)", "$2");
h = h.replaceAll("\\s+", " "));

这应该删除最后一个重复的单词:)