Java не поддерживает переменную длину при взгляде за спиной.
В этом случае, кажется, вы можете легко проигнорировать это (предполагая, что весь ваш ввод состоит из одного слова):
([a-z])(?!.*\1)([a-z])(?!.*\2)(.)(\3)(.)(\5)
Оба взгляда делаютне добавляйте ничего: первый утверждает, по крайней мере, два символа, где у вас был только один, а второй проверяет, что второй символ отличается от первого, который уже был покрыт (?!.*\1)
.
Рабочий пример: http://regexr.com? 2up96