如何在java中使用regex检查重复的字符串

时间:2013-11-13 10:39:35

标签: java regex

我是regex的新手并帮助我解决方案

例如我有一个字符串,如下所示,

String str = "this is a hello world string and duplicate starts from here this is a hello world string";

我想使用正则表达式检查以下条件。

if("this is a hello world string" has appeared more than once in String str){
    return false;
}
else{
    return true;
}

如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

你可以在没有像这样的正则表达式的情况下做到这一点

if(str.indexOf("this is a hello world string") != str.lastIndexOf("this is a hello world string")) { 
    return false;
}
else{
    return true;
}

答案 1 :(得分:1)

您也可以在此示例中使用正则表达式:

String str1 = "this is a hello world string";
String str2 = "this is a hello world string and duplicate starts from here this is a hello world string";
Pattern pattern = Pattern.compile(str1);
Matcher matcher = pattern.matcher(str2);

int count = 0;

while(matcher.find()){
    count++;
}

if(count > 0) {
     return true;
} else {
     return false;
}

希望它有所帮助。欢呼声。

答案 2 :(得分:0)

您可以使用以下代码

String duplicatePattern = "(?i)\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b";
    Pattern p = Pattern.compile(duplicatePattern);
    String phrase = "this is a hello world string and duplicate starts from here this is a hello world string";
    Matcher m = p.matcher(phrase);
    String val = null;
    while (m.find()) {
        val = m.group();
        System.out.println("Matching segment is \"" + val + "\"");
        System.out.println("Duplicate word: " + m.group(1)+ "\n");
    }

答案 3 :(得分:0)

如果你真的想要找到两个重复的“东西”,而没有指明那些东西是什么,那么你将很难为它编写正则表达式。

这匹配两个“重复的东西”:

(.+)(?=.+)\1

注意,它找到“任何东西”并断言“其他任何东西”可以介于它和它自己的另一个实例之间。

是的,这样并不会让人感到困惑。