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";
}
}

次のコードでは、ファイルの行、つまり$_を変数$match(一致する実際のメタ文字を含む)と一致させることができませんか?したがって、出力は生成されません。どのような変更が必要ですか?

4

1 に答える 1

2

^文字列の先頭と末尾に一致すると$アンカーを正規表現から削除する必要があります。

それらを使用すると、正規表現はメタ文字のみを含む行のみに一致します。

$matchまた、単語ではなく文字の範囲であることを示すために、[ .. ]文字で折り返すこともできます。

たとえば、次を含む行を除外したい場合、_または次を含む必要があります%$match[_$]

コメントに従って、どちらかの端にメタ文字が見つかった場合にのみ一致させたい場合は編集します。

if (/^${match}/ || /${match}$/) {
    ...
}
于 2012-04-16T13:35:06.323 に答える