Perl regexp matching für strings mit Sonderzeichen

Ich habe die Liste der Teilstrings, die ich brauche passen in eine Liste von URL-Zeichenfolgen. Die Zeichenketten Sonderzeichen wie '|', '*', '-', '+' etc. Wenn die URL-Zeichenfolgen enthält, die Teilzeichenfolge, die ich brauche, um einige der operation. Aber jetzt können nur sagen, ich werde print "TRUE" in die Konsole.

Habe ich diese von der ersten Lesung aus der Liste von Teilstrings und legt es in einen hash. Ich habe dann versucht, führen Sie eine einfache Regexp-match der gesamten Liste für jede URL, bis eine übereinstimmung gefunden wird. Der code ist so etwas wie dieses.

open my $ADS, '<', $ad_file or die "can't open $ad_file";

while(<$ADS>) {
        chomp;

        $ads_list_hash{$lines} = $_;
        $lines ++;
 }  

close $ADS;

open my $IN, '<', $inputfile or die "can't open $inputfile";      
my $first_line = <$IN>;

while(<$IN>) {      
       chomp;       

       my @hhfile = split /,/;       
       for my $count (0 .. $lines) {

            if($hhfile[9] =~ /$ads_list_hash{$count}/) {
                print "$hhfile[9]\t$ads_list_hash{$count}\n";

                print "TRUE !\n";
                last;
            }
       }

 }

 close $IN;

Das problem ist, dass die Zeichenketten haben eine Menge von Sonderzeichen, die verursacht Fehler im Spiel $hhfile[9] =~ /$ads_list_hash{$count}/. Einige Beispiele sind;

+adverts/
.to/ad.php|
/addyn|*|adtech;

Bekomme ich eine Fehlermeldung in den Zeilen wie diese, die im Grunde sagt "Quantifizierer folgt nichts in regexp". Muss ich chanhge etwas in der regexp passende syntax um diese zu vermeiden?

Wenn Sie nur versuchen zu finden, ein Teil der Zeichenfolge, dann ein regex scheint mir ein bisschen übertrieben... gibt es einen Grund, warum index nicht tun, was Sie brauchen?
mögliche Duplikate von Wie gehe ich mit Sonderzeichen in eine Perl-regex?

InformationsquelleAutor sfactor | 2011-03-25

Schreibe einen Kommentar