$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(包含要匹配的实际元字符)? 因此没有产生输出 需要做哪些改变?
答案 0 :(得分:2)
您需要从正则表达式中删除与字符串的开头和结尾匹配的^
和$
锚点。
使用它们,正则表达式只匹配仅包含元字符的行。
您可能还希望将$match
包裹在[ .. ]
个字符中,以表明它是一系列字符,而不是单词。
例如,如果您要排除包含_
或%
的任何行,则$match
需要包含[_$]
编辑如果根据评论,您只想在两端找到元字符时匹配,请使用:
if (/^${match}/ || /${match}$/) {
...
}