On Feb 26, Paul Farley said:

>I'm trying to use a regex to match a passed value.  I'm trying to use an or
>between the patterns, and it needs to be case insensitive.
>I've tried it two ways, and it doesn't seem to work either way completely.

>if($ep =~ /^rglyc[12345] |^rglyd[235678] | ^rglyf3 | ^rglyg6 | ^rglyt5 |
>^rglyu1/i)

Uh... do you MEAN to have those spaces in there?  I have a feeling they're
killing your regex.  For example, how could / ^foo/ EVER match?  How can
you match a " " before the beginning of the string?

If you want to use whitespace in your regex for mere spacing, use the /x
modifier.

  if (/ ^foo | ^bar | ^blat /x) { ... }

Your regex can be shortened a bit, too.  No sense in matching the SAME
leading string OVER and OVER again:

  if ($ep =~ /^rgly(c[12345]|d[235678]|f3|g6|t5|u1)/i) { ... }

>    {
>       $org="LYX";
>    subscription($ep,$pr,$sub,$org,$plat);
>    }
>   elsif ($ep =~ /^rglyv[34567] | ^rglyw[79]/i )

  elsif ($ep =~ /^rgly(v[34567]|w[79])/i) { ... }

>    {
>       $org="LYP";
>    subscription($ep,$pr,$sub,$org,$plat);
>    }

>if($ep =~ /^rglyc[12345]/i |/^rglyd[235678]/i | /^rglyf3/i | /^rglyg6/i |
>/^rglyt5/i | /^rglyu1/i)

This method breaks because only the first regex is executed on $ep; all
the others work on $_.  And you're using BITWISE "OR", not logical "OR".

  if ($ep =~ /foo/ || $ep =~ /bar/ || ... ) { ... }

But then you have to write lots of code, and you're executing LOTS of
regexes.  Icky.

>1. How do I do an "or" in a regex if statement like this?
>2. Is there a better(more efficient) way to do this? (I know that's a loaded
>question to a perl list. <G>)

See above.

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to