in reply to Regex with variables
All the above are good; just a note for safety's sake, if your use of such a variable as the regular expression ever falls into risk of including metacharacters, you may need to use quotemetato convert it to a regular expression:
#!/usr/bin/perl use strict; my @inputData = ( 'test.dat', 'test.exe', 'testadat.exe', 'testaexe.dat', ); my @regExp = ( 'test.dat', 'test.exe', ); print "----- Without quotemeta ---------------\n"; foreach my $regularExpression (@regExp) { print "Using regular expression /$regularExpression/:\n"; foreach my $inputLine (@inputData) { if ($inputLine =~ /$regularExpression/) { print " Match: \"$inputLine\"\n"; } } } print "----- With quotemeta ------------------\n"; foreach my $regularExpression (@regExp) { my $actualRegularExpression = quotemeta $regularExpression; print "Using regular expression /$actualRegularExpression/:\n"; foreach my $inputLine (@inputData) { if ($inputLine =~ /$actualRegularExpression/) { print " Match: \"$inputLine\"\n"; } } } print "----- Fini ----------------------------\n";
Results:
D:\PerlMonks>regex1.pl ----- Without quotemeta --------------- Using regular expression /test.dat/: Match: "test.dat" Match: "testadat.exe" Using regular expression /test.exe/: Match: "test.exe" Match: "testaexe.dat" ----- With quotemeta ------------------ Using regular expression /test\.dat/: Match: "test.dat" Using regular expression /test\.exe/: Match: "test.exe" ----- Fini ---------------------------- D:\PerlMonks>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Regex with variables
by AnomalousMonk (Archbishop) on Jun 30, 2015 at 01:44 UTC |