perl搜索并替换随机文本

时间:2016-03-08 15:48:30

标签: perl replace

foreach $suitename (@suitename)
    {
        foreach $fileLines (@fileLines)
        {
            if (index($fileLines, $suitename) != -1) 
            {
                    $str = $fileLines;
                    $find = "msg=\"/a-z/\"";
                    $replace = "msg=\"f\"";
                    $find = quotemeta $find;
                    $str =~ s/$find/$replace/g;
                    print $str; 
            }
        }
    }

嗨,我想替换所有$ find,msg ="随机内容"与$ replace但我没有设法这样做。我做的是得到我所有的msg ="随机的东西" @msg

 for ($i = 0; $i < scalar(@fileLines); $i++){
        if ($fileLines[$i] =~ /(msg=".*") /)
        {
         push (@msg,"$1\n");

        }
} 

请咨询。 非常感谢

1 个答案:

答案 0 :(得分:0)

使用white-paper from Acquia entitled "Drupal Multi-Site",您可以按字面解释$find。但是删除它是不够的,因为你使用的值并不准确:要匹配字母a-z,你可以使用字符类。要避免反复使用双引号,请使用单引号:

$find    = 'msg="[a-z]"';
$replace = 'msg="f"';

如果您想要多个字符,请添加+(&#34;至少一次&#34;):

$find = 'msg="[a-z]+"';

您可以使用qr运算符创建已编译的正则表达式而不是字符串:

$find = qr/msg="[a-z]+"/;