Image

Регулярные выражения

Возник такой вот нетривиальный вопрос по регулярным выражениям (regular expressions): можно ли с помощью простого выражения найти все комбинации заданных лексем? Пример следующий: у меня есть набор букв "кноруш", и я хочу найти слова "коршун" и "шнурок" - все буквы здесь присутствуют по одному разу. При этом мне не нужно других результатов - другой длины ("рок", "шок", "руно") и/или с частью указанных букв ("окорок"), что получается, если я просто напишу '[кноруш]*' или '[кноруш]{6}'. В простом случае можно, конечно, запустить цикл, в котором создать строку со всеми комбинациями указанных букв, вроде 'коршун|шнурок|кноруш|корунш|...', но с увеличением числа букв длина такой строки резко возрастает (по факториалу). Вот мне и стало интересно, предусмотрен ли в регекспах механизм такого перебора?