Here are some raw timings I get, using the extensive word list I have for crosswords:
% perl -nwle 'END{ warn +(times)[0],"\n" } print $_ ' /usr/share/dict/hv.words | wc -l 0.04 285520 % perl -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(.)(?!\1)(.)(?!\1|\2)(.)(?!\1|\2|\3)(.)(?!\1|\2|\3|\4) +(.)$/ ' /usr/share/dict/hv.words | wc -l 0.13 8632 % perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(?:(.)(.)(.)(.)(.)(?(?{ 5 != uniq $1, $2, $3, $4, $5 } +)(?!)))$/ ' /usr/share/dict/hv.words | wc -l 0.39 8632 % perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(.)(.)(.)(.)(.)$/ && 5 == uniq $1, $2, $3, $4, $5 ' /usr/share/dict/hv.words | wc -l 0.1 8632 %
Oh, the anchor needs to come before the code block!
% perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(?:(.)(.)(.)(.)(.)$(?(?{ 5 != uniq $1, $2, $3, $4, $5 +})(?!)))/ ' /usr/share/dict/hv.words | wc -l 0.12 8632 %
I guess I was wrong (but it's important to get that anchor in the right place).
In reply to Re^6: Nonrepeating characters in an RE
by hv
in thread Nonrepeating characters in an RE
by BernieC
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |