为什么找到正则表达式工作,但替换正则表达式失败?

时间:2013-12-02 00:59:11

标签: regex perl

我正在尝试进行替换(并且有其他几个人在同一个脚本中工作),但即使我正在寻找的东西也存在,但是我确实知道这一点,因为简单的查找正则表达式成功了。

print "$search : $replace \n";

if($output =~ /($search)/)
{
    print "found $1\n";
}

if($output =~ s/$search/$replace/)
{
    print "substituted\n";
}

我从第一个print语句中知道两个变量都包含预期值。

“found”打印语句打印预期结果。

“替换”的print语句永远不会打印,并且$ output的内容不会被替换正则表达式改变。

为什么替换不起作用,即使查找有效?

1 个答案:

答案 0 :(得分:2)

不会。你可能有

if($output =~ /($search)/g)

如果情况并非如此,请提供问题的实际演示。或者如果不可能,至少在每个if之前提供以下输出。

use Devel::Peek;
Dump($output);
Dump($search);

提供perl -V(大写V)的输出也不会有害。