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

您需要从匹配字符串开头和结尾的正则表达式中删除^and$锚点。

有了它们,正则表达式将只匹配包含元字符的行。

您可能还想$match[ .. ]字符换行,以表明它是一个字符范围,而不是一个单词。

例如,如果您想排除任何包含_%$match需要包含的行[_$]

编辑如果根据评论,您只想匹配在任一端找到元字符,请使用:

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