Если это Java, я предлагаю использовать java для решения этой проблемы, а не regex, это просто, и вы можете очень легко расширить его, если появятся новые требования:
//wordList is your string list
List<String> newList = wordList.stream()
.filter(s -> Arrays.stream(s.split(""))
.collect(groupingBy(identity(),ounting())).values().stream().anyMatch(c -> c == 2))
.collect(Collectors.toList());
некоторые статические импорты:
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;
Если мы проведем небольшой тест, просто распечатаем результат:
List<String> wordList = Arrays.asList("abcdef", "bababc", "abbcde", "abcccd", "aabcdd", "abcdee", "ababab");
wordList.stream()
.filter(s -> Arrays.stream(s.split(""))
.collect(groupingBy(identity(), counting())).values().stream().anyMatch(c -> c == 2))
.forEach(System.out::println);
У нас есть:
bababc
abbcde
aabcdd
abcdee