perl和变量名的正则表达式

时间:2014-11-18 16:10:10

标签: regex perl

我在perl中有一些正则表达式的问题。我试图在另一个字符串的开头添加一个字符串(实际上,在文件名的开头插入一个字符串)。我想要的是在插入该字符串之前检查文件是否已经从它开始。

这是我的代码:

if ($ficheroSinExt !~ m/^$strCadena/){
    # if it doesn't exist at the beginning, I insert it...
    $ficheroSinExt = $strCadena . " " . $ficheroSinExt;
}
else{
    print "---->It already exists!!!\n";
}

我用两个文件名测试它,只有一个文件名在开头包含[Perl](" [Perl] File1.pdf"" File2.pdf"),和$ strCadena包含[Perl]。我最终为这两个文件添加了[Perl],因此他们的新名称是" [Perl] [Perl] File1.pdf"和" [Perl] File2.pdf"。

我认为这个问题来自匹配运算符的^ $ strCadena,但我不会来解决它。你能帮我一把吗?

提前致谢, 迭

2 个答案:

答案 0 :(得分:1)

引用特殊字符:

if ($ficheroSinExt !~ m/^\Q$strCadena/){
#                  here __^

答案 1 :(得分:1)

您想要禁用模式元字符(请参阅perlre

if ($ficheroSinExt !~ m/^\Q$strCadena\E/){