It does hurt readability, however, if it is in a variable then the 
readability goes up a little.  regex is probably a bad name, tho.

noRepeats3-6Letters = ...
dict.scan(noRepeats3-6Letters)

Even better would be a method that creates a regex for an arbitrary 
length so it's ugliness is never shown in its entirety in one 
concentrated spot.  The king of readability, I admit, doesn't involve 
/regexp?e[ns]/ at all.

class Array
def uniq?
(uniq == self)
end
end

class String
def letters
split(//)
end
end

dict.select {|x| x.length.between?(3, 6) && x.letters.uniq?}

dan

James Edward Gray II wrote:
> On Jan 7, 2007, at 6:41 PM, Daniel Finnie wrote:
> 
>> Oops, that doesn't match {3,6} just {6}.
>>
>> >> regex = 
>> /^([a-z])(?!\1)([a-z])(?!\1|\2)([a-z])(?:(?!\1|\2|\3)([a-z]))?(?:(?!\1|\2|\3|\4)([a-z]))?(?:(?!\1|\2|\3|\4|\5)([a-z]))?$/ 
>>
> 
> Wow.  That's darn clever, but probably over abusing regular expressions 
> a bit, don't you think?  ;)
> 
> James Edward Gray II
> 
>