我是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;
}
如何实现这一目标?
答案 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
注意,它找到“任何东西”并断言“其他任何东西”可以介于它和它自己的另一个实例之间。
是的,这样并不会让人感到困惑。