Connecting Tech Pros Worldwide Help | Site Map

RegEx Problem

  #1  
Old June 21st, 2006, 05:35 PM
Jerry Baker
Guest
 
Posts: n/a
Special characters inside of variables cannot be escaped, but Perl tries
to use them in a RegEx. Try this example program to see what I mean:

-----PROGRAM-----
#!/usr/bin/perl

$test = "This + test";
$test2 = "+";
if($test =~ /^This $test2 test$/) {
print "WORKS!!!";
}
else {
print "DOESN'T WORK";
}
-----PROGRAM-----

The result will always be "DOESN"T WORK". The same result will occur if
you change $test2 = "\+".

To verify that the program isn't at fault, the following always returns
"WORKS!!!":

-----PROGRAM-----
#!/usr/bin/perl

$test = "This + test";
if($test =~ /^This \+ test$/) {
print "WORKS!!!";
}
else {
print "DOESN'T WORK";
}
-----PROGRAM-----

How can I tell Perl to ignore "special" characters in a variable when
performing a RegExp comparison?

Thanks.
  #2  
Old June 21st, 2006, 06:05 PM
Jerry Baker
Guest
 
Posts: n/a

re: RegEx Problem


Jerry Baker wrote:[color=blue]
> How can I tell Perl to ignore "special" characters in a variable when
> performing a RegExp comparison?[/color]

The answer is \Q and \E.

-----PROGRAM-----
#!/usr/bin/perl

$test = "This + test";
$test2 = "+";
if($test =~ /^This \Q$test2\E test$/) {
print "WORKS!!!";
}
else {
print "DOESN'T WORK";
}
-----PROGRAM-----
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
regex problem with re and fnmatch Fabian Braennstroem answers 2 November 21st, 2007 08:05 PM
RegEx problem =?Utf-8?B?amFj?= answers 7 June 29th, 2007 07:45 AM
The Regex problem ad answers 4 July 20th, 2006 08:45 AM
regex problem - 2.0 beta 2 answers 4 November 19th, 2005 04:47 PM
Regex Problem:How to use "balancing group definition"? FirePhoenix answers 1 November 16th, 2005 11:20 AM