Ray Jette wrote:
> Bowie Bailey wrote:
> > Ray Jette wrote:
> > 
> > > Good morning,
> > > I am trying to write a negative scoring rule that files on the
> > > following: PO PO#
> > > PO #
> > > 
> > > Following is the rule I am using:
> > > 
> > > header PO_AND_ORDERS        Subject =~ /\bPO*?#?/i
> > > score PO_AND_ORDERS        -0.50
> > > describe PO_AND_ORDERS    A negative scoring rule that searches
> > > the subject for PO #'s. 
> > > 
> > > Thanks for any help you can provide.
> > > 
> > 
> > Try this one:
> > 
> >     Subject =~ /\bPO\b ?#?/i
> > 
> > The "\b" after the "PO" will prevent it from matching things like
> > "positive", "pollen", or anything else that happens to start with
> > "po". Keep in mind that the "i" at the end makes it
> > case-insensitive, so this will match "PO", "po", "pO", etc.
> > 
> > 
> Sometimes the subject will be: PO#34598459 so do I realy want to us
> \b? I need to match all of the ollowing:
> PO
> PO#
> PO  [0-9] - im not sure the max amount of numbers
> PO#  [0-9] - im not sure the number of numbers
> PO[0-9] - not sure how many numbers
> PO#[0-9] - not sure how many numbers

\b matches a zero-length word boundary.  This means that one side is a
"word character" and the other side is not.  Word characters are defined
as alphanumeric plus "_".  So the only option in your list that would
cause a problem is "PO12345".

Try this one:

    Subject =~ /\bPO(?:\b ?#?|\d)/i

Actually, since both the space and the hash are optional, is there any
point in matching them?

This might be better:

    Subject =~ /\bPO(?:\b|\d)/i

Or you could look for the number (which removes the need for a word
boundary check):

    Subject =~ /\bPO ?#? ?\d/i

-- 
Bowie

Reply via email to