Возможно, \b(\w*(\w)\w*(?!\2)\w+)\b
работает для вас. Он обрабатывает примеры, которые вы приводите.
Он соответствует букве \w
в группе, затем ищет что-то, кроме буквы, используя обратные ссылки и отрицательный взгляд (?!\2)
. В конце мы сопоставляем хотя бы один символ, что необходимо для того, чтобы заставить отрицательную прогнозирующую силу хотя бы один отдельный символ. Затем мы помещаем дополнительные \w*
вокруг, чтобы разрешить дополнительные буквы. \b
гарантирует, что концы совпадений находятся на границах слов.
http://www.rubular.com/r/pwjGi9eLf5
Обратите внимание, что это не супер-пупер регулярное выражение, которое соответствует только английским словам. Для этого вы хотите сравнить со словарем. Но это, похоже, не то, что вы собираетесь здесь делать.