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
In reply to Re: Regular Expression Help
by GrandFather
in thread Regular Expression Help
by dhackbar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |