$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 (它包含要匹配的实际元字符)进行匹配?因此不会产生任何输出,需要进行哪些更改?
发布于 2012-04-16 21:35:06
您需要从正则表达式中删除与字符串的开头和结尾匹配的^和$锚点。
使用它们,regexp将只匹配只包含元字符的行。
您可能还希望将$match包装在[ .. ]字符中,以表明它是一个字符范围,而不是一个单词。
例如,如果要排除任何包含_或%的行,则$match需要包含[_$]
编辑如果根据注释,您只想在任意一端找到元字符时才进行匹配,请使用:
if (/^${match}/ || /${match}$/) {
...
}https://stackoverflow.com/questions/10175135
复制相似问题