I have a program that I use for this sort of thing, specifically written always to generate a single regular expression.
The program is 'word', and it includes flags -a for "anagram", -u for "use any subset of the letters", and -D for "just show me the regexp".
For an exact anagram, word -Da rtesamcna gives:
/^(?:(?=.*e)(?=.*n)(?=.*c)(?=.*r)(?=.*a.*a)(?=.*m)(?=.*s)(?=.*t).{9,9} +)\z/oi
That is: require each of the single letters, require a double "a", and require exactly 9 letters.
For all subsets, word -Dua rtesamcna gives:
/^(?:(?:([encrmst])(?!.*\1)|([a])(?!.*\2.*\2))+)\z/oi
That is: require all matching letters to be from the list, and additionally don't allow more than one of any of [encrmst], nor more than two "a"s.
(Note: normal use of the word program also requires wrap from the same place.)
Hugo
In reply to Re: regex for word puzzle
by hv
in thread regex for word puzzle
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |