URL 문자열 목록 내에서 일치해야하는 하위 문자열 목록이 있습니다. 하위 문자열에는 '|', '*', '-', '+'등의 특수 문자가 있습니다. URL 문자열에 하위 문자열이 포함되어 있으면 일부 작업을 수행해야합니다. 하지만 지금은 콘솔에 "TRUE"라고 인쇄 할 것입니다.특수 문자가있는 문자열의 Perl 정규 표현식
나는 하위 문자열 목록에서 먼저 읽은 다음 해시에 넣음으로써이 작업을 수행했습니다. 그런 다음 일치하는 항목이 발견 될 때까지 각 URL에 대해 전체 목록의 간단한 Regexp 일치를 수행하려고했습니다. 코드는 다음과 같습니다.
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;
문제는 문자열 경기 $hhfile[9] =~ /$ads_list_hash{$count}/
에 오류를 일으키는 특수 문자를 많이 가지고있다. 몇 가지 예가 있습니다.
+adverts/
.to/ad.php|
/addyn|*|adtech;
나는 기본적으로 밝히는이 같은 라인에 오류가 "한정 기호는 정규 표현식에서 아무것도 다음과 없습니다"얻을. 이들을 피하기 위해 정규 표현식 매칭 구문에서 무엇인가 chanhge해야합니까?
그냥 문자열을 찾기 위해 노력하는 경우, 다음 정규식 ... 이유가 거기에 과잉 조금 보인다 이유 [인덱스 ] (http://perldoc.perl.org/functions/index.html)는 필요한 것을하지 못합니까? – jswolf19
가능한 중복 [Perl 정규 표현식에서 특수 문자를 처리하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/576435/how-do-i-handle-special-characters-in-a-perl-regex) – daxim