Действительно ли возможно создать регулярное выражение PCRE-стиля, которое будет только соответствовать каждой букве в списке только однажды?
Например, если у Вас есть буквы "lrsa", и Вы пытаетесь соответствовать списку слов против:
^[lrsa]*m[lrsa]*$
Вы собираетесь соответствовать (допустимым) "бегствам", но также и "ламы" (недопустимый в наших целях, потому что у Вас только был один). Если бы Ваш набор буквы был "lrsaa", то Вы хотели бы соответствовать "ламам".
Действительно ли это возможно с регулярными выражениями, или я должен обработать его программно?
Вы можете использовать негативный прогноз:
^(?!.*?(.).*?\1)[lrsa]*m[lrsa]*$
сделает то, что вы хотите