使用perl中的正则表达式匹配包含元字符的变量

时间:2012-04-16 13:31:59

标签: regex perl file

$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(包含要匹配的实际元字符)? 因此没有产生输出 需要做哪些改变?

1 个答案:

答案 0 :(得分:2)

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

使用它们,正则表达式只匹配包含元字符的行。

您可能还希望将$match包裹在[ .. ]个字符中,以表明它是一系列字符,而不是单词。

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

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

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