D.J. wrote:
> On 8/24/06, Bart Schaefer <[EMAIL PROTECTED]> wrote:
> > On 8/24/06, D. J. <[EMAIL PROTECTED]> wrote:
> > > 
> > > I'm expecting these type of strings for sure:
> > > 
> > > cat
> > > dog
> > > cat dog
> > > dog cat
> > > 
> > > But I may get something like this too:
> > > 
> > > cat cat dog
> > > dog dog
> > > 
> > > Essentially I want it to match if anything other than cat or dog is
> > > in the string.
> > 
> > That constraint means you have to construct a regex that can be
> > anchored at both beginning and end of string, e.g.
> > /\A(\s*(cat|dog)\s*)+\Z/.  I'm not sure that ever makes sense in the
> > context of a spamassassin rule, except maybe one matching against a
> > specific header.
> 
> That's the idea... I've got the RELAY_COUNTRIES plugin that I want it
> to place a small score if the relay server is not in the US or
> Canada.  However, I'm not sure if the plugin will list the same
> country multiple times, which is where my uncertainty in the "cat cat
> dog" scenario came in.  So far my original rule ( !~ /cat|dog/) seems
> to be working well, but if I have a spammer smart enough to manage to
> bounce his spam originating in China off of somewhere in the US
> before it hits my MX, then that rule will fail.  Am I possibly too
> paranoid?        

Ok.  Try this one:

   $value =~ /\b(?!cat\b|dog\b)\w+\b/i

This will match any word in the string as long as that word is not
"cat" or "dog".

-- 
Bowie

Reply via email to