in reply to Regular Expression Help
Me thinks you have the wrong end of the stick. You seem to want to match 7000 or 7001 or 7002 or 7003, but you have put that in a character class so what is being matched is one of '0', '1', '2', '3', '7', or '|'.
You also have a problem with your '(' and ')' - they are capture parenthesis which is not what you want. Probably what you really want is:
use warnings; use strict; my $full_text = "(7001) - This is some text"; my $check_str = '\((?:7000|7001|7002|7003)\) - This'; print "full_text has the check_str\n" if $full_text =~ /$check_str/;
Note the use of ' rather than " so you don't have to quote the \ (as in \\) to quote the '(' and ')' and that a non-capture group '(?:...)' is used for the alternate group. Because the 700 is common $check_str could become '\(700[0123]\) - This' - using a character class to match the last digit.
Take a look at perlretut, especially at the 'Matching this or that' section and the 'Using character classes' section.
Update: fix various typos and omissions
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Regular Expression Help
by dhackbar (Initiate) on Nov 16, 2005 at 13:18 UTC | |
by Eimi Metamorphoumai (Deacon) on Nov 16, 2005 at 15:54 UTC | |
by GrandFather (Saint) on Nov 16, 2005 at 19:37 UTC |