사용자가 제공 한 패턴을 포함하는 구성 파일이 있습니다. 기본적으로 패턴은 알파벳, 숫자, 공백, 반드시 닫히지 않는 괄호 및 특수 문자의 조합 일 수 있습니다. 패턴 예 : <Error my (error** fail& 345% ?+[+?>
패턴이 변수에있을 때 perl에서 복잡한 알려지지 않은 패턴을 비교하는 방법은 무엇입니까?
저는이 문제를 해결하기가 매우 쉽습니다. 코드의
내 조각 :
for (<FH>) {
for (my $j = 0 ; $j < $num_pat ; $j = $j + 1) {
print "This is the pattern : $pat_array[$j] \n";
if ($_ =~ m/'$pat_array[$j]'/) {
print "$_ : match found for $pat_array[$j] \n";
#print "KPI for the pattern is : $kpi_array[$match] : array style \n";
$match_count[$j] = ($match_count[$j] + 1);
}
}
}
패턴 배열은 여러 패턴을 가지고있다. ($ _ = ~ m/'$ pat_array [$ j]'/) 간단한 패턴에서는 작동하지만 예제에서는 작동하지 않습니다.
더 자세히 진행하도록 도와주세요.
패턴이 일치하지 않는 이유에 대해 의미있는 대답을 제공하려면 예제 데이터가 필요합니다. 그러면 Google에서 알려 드릴 수 있습니다. 아마도 당신이'$ pat_array [$ j]'를 인용했기 때문에 아마 말 하겠지만 당신이 메타 문자를 제대로 벗어나지 못했을 수 있습니다. – Sobrique
당신이 준 예제는 유효한 정규식이 아닙니다. - ** **는 절대 이스케이프되지 않으면 허락되지 않습니다. –
"복잡한 미지의 정규식 패턴"이 아니기 때문에이 질문을 명확히하지 않기로했습니다. , 그것은 단순히 유효한 정규 표현식이 아닙니다. 이 일로 무엇을하려하는지 또는 무엇을하고 싶은지는 명확하지 않습니다. – melpomene