2012-04-16 5 views
1
$match=""; 

for($i=0;$i<=$#wor;$i++) 
{ 
$match=$match.$letter[$wor[$i]]; 
} 

print $match; 

open ABC,"<words.txt"; 

while(<ABC>) 
{ 

if($_ =~ /^$match$/) 
{ 
print "$_"; 
print "\n"; 
} 
} 

다음 코드에서 $ _ 변수에 $ _와 일치시킬 수는 없습니다 (실제 일치하는 메타 문자 포함). 일치 해)? 따라서 출력이 생성되지 않습니다. 어떤 변경이 필요합니까?perl에서 정규 표현식을 사용하는 메타 문자를 포함하는 변수와 일치 시키려면

답변

2

문자열의 시작과 끝과 일치하는및 $ 앵커를 정규식에서 제거해야합니다.

정규 표현식은 에만에만 메타 문자가 포함 된 행과 일치합니다.

$match[ .. ] 자로 줄여서 단어가 아닌 문자의 범위임을 나타낼 수도 있습니다. 당신이 _ 또는 %을 포함하는 모든 라인을 제외하고 싶다면

예를 들어, $match는 의견에 따라, 당신은 단지 메타 문자에 발견되면 일치하려면, 편집 경우 [_$]

포함해야 양쪽 끝 : 사용 :

if (/^${match}/ || /${match}$/) { 
    ... 
} 
+0

하지만 처음부터 끝까지 검색하고 싶습니다. 당신이 그렇게 말씀하신 경우는 도움이 것 – Luv

+0

... – Alnitak

+0

당신은'할 수있는 경우 (/^$ {일치}/||/$ {일치} $ /) {...}' – Alnitak

관련 문제