我在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,但我不会来解决它。你能帮我一把吗?
提前致谢, 迭
答案 0 :(得分:1)
引用特殊字符:
if ($ficheroSinExt !~ m/^\Q$strCadena/){
# here __^
答案 1 :(得分:1)
您想要禁用模式元字符(请参阅perlre)
if ($ficheroSinExt !~ m/^\Q$strCadena\E/){