这种模式应该可以解决问题
\b\w*?(\w{2})\w*?\1\w*?\b
\b
是一个词边界
\w*?
一些字母(懒惰地)
(w{2})
正好两个字母,匹配并捕获
\w*?
和上面一样
\1
我们两封信捕获组的内容
\w*?
和上面一样
\b
另一个词边界
java中的快速测试:
public static void main(String[] args) {
final Pattern pattern = Pattern.compile("\\b\\w*?(\\w{2})\\w*?\\1\\w*?\\b");
final String string = "tatarak brzozowski loremipsrecdks a word that does not match";
final Matcher matcher = pattern.matcher(string);
while(matcher.find()) {
System.out.println("Found group " + matcher.group(1) + " in word " + matcher.group());
}
}
输出
Found group ta in word tatarak
Found group zo in word brzozowski
Found group re in word loremipsrecdks