<SNIP>

   subject =~ /\b(?!cartoon|croatan|carroon)c[arto]{5}n\b/i
   subject =~ /\b(?!downloadable)d[ownladb]{10}e\b/i
   subject =~ /\b(?!dripping)d[ripn]{6}g\b/i
   subject =~ /\b(?!ejaculating|enunciating)e[jacultin]{9}g\b/i

You can't use rules like this. The pattern "caaaaan" matches your first
example. Similarly "drrrrrrg" matches the third line.

I spent a while trying to work out the exact same problem, and the
explanation that follows came to me while standing in the shower :)

The mathematical explanation of why what you are considering is based on
the fact that any regular expression can be expressed as a finite-state
machine. One of the properties of finite-state machines is that they
have no memory, (understanding of how they reached a specific state). 

What you are asking is 'can a finite-state machine support conditional
movements' e.g go to state A if this is the first time it has seen an r,
but go to state B if it is the second time.

I hope this helps, feel free to drop me a line if you want a more
detailed explanation/reasoning

R






---------------------------------------------------
This email from dns has been validated by dnsMSS Managed Email Security and is 
free from all known viruses.

For further information contact [EMAIL PROTECTED]




Reply via email to