Java模式匹配 - 可以将匹配的模式记忆并在以后的同一个正则表达式中使用吗?

时间:2017-09-23 06:53:33

标签: java regex string

我写的程序需要确保它没有在输入字符串中重复出现字符或字符序列。
如何使用java模式匹配来确保这一点?我认为如果正则表达式可以记住它找到的模式,这是可能的。或者可能是我错了。
但最终我想知道使用java正则表达式是否可行。

例如:
goneishegone \\应该返回true - "去掉#34;出现了两次         goneisheyesterday \\应该返回false - 没有重复的话。 (重复的单​​词的最小长度应为2或更多)

1 个答案:

答案 0 :(得分:0)

您可以将正则表达式匹配的单词添加到HashSet中。如果add()方法返回false,则该单词已在Set中。所以你的解决方案看起来如下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

Boolean return = false;
Set<String> allMatches = new HashSet<String>();
Matcher m = Pattern.compile("your regular expression here")
    .matcher(yourStringHere);
while (m.find()) {
  if(!allMatches.add(m.group())){
    return = true;
    break;
}

System.out.println(Boolean.toString(return));