Perl 使用变量作为正则表达式替换参数
我一直在搜索,没有找到答案。为什么这不起作用Perl 使用变量作为正则表达式替换参数,perl,Perl,我一直在搜索,没有找到答案。为什么这不起作用 $self->{W_CONTENT} =~ /$regex/; print $1; #is there a value? YES $store{URL} =~ s/$param/$1/; 是的,1美元有价值$param被替换,但它被替换为nothing。我肯定1美元有价值。如果我替换为文本而不是“$1”,它可以正常工作。请帮忙 表达式中不应使用$1之类的反向引用;您可以使用不同的表示法-有关概述,请查看 考虑获取$1的
$self->{W_CONTENT} =~ /$regex/;
print $1; #is there a value? YES
$store{URL} =~ s/$param/$1/;
是的,1美元有价值$param被替换,但它被替换为nothing。我肯定1美元有价值。如果我替换为文本而不是“$1”,它可以正常工作。请帮忙 表达式中不应使用$1之类的反向引用;您可以使用不同的表示法-有关概述,请查看
考虑获取$1的值并将其存储在另一个变量中,然后在正则表达式中使用该值。表达式中不应使用$1之类的反向引用;您可以使用不同的表示法-有关概述,请查看
考虑获取$1的值并将其存储在另一个变量中,然后在正则表达式中使用该值。For
$1
要有一个值,您需要确保$param
中有括号()
。i、 e.以下问题与您所解释的问题类似
my $fred = "Fred";
$fred =~ s/red/$1/;
# $fred will now be "F"
但这是有效的
my $fred = "Fred";
$fred =~ s/r(ed)/$1/;
# $fred will now be "Fed"
现在,如果您想在第二个正则表达式中使用第一个正则表达式中的$1
,您需要复制它。每个正则表达式求值重置$1
<代码>$&。所以你想要的是:
$self->{W_CONTENT} =~ /$regex/;
print $1; #is there a value? YES
my $old1 = $1;
$store{URL} =~ s/$param/$old1/;
要使
$1
具有值,您需要确保$param
中包含括号()
。i、 e.以下问题与您所解释的问题类似
my $fred = "Fred";
$fred =~ s/red/$1/;
# $fred will now be "F"
但这是有效的
my $fred = "Fred";
$fred =~ s/r(ed)/$1/;
# $fred will now be "Fed"
现在,如果您想在第二个正则表达式中使用第一个正则表达式中的$1
,您需要复制它。每个正则表达式求值重置$1
<代码>$&。所以你想要的是:
$self->{W_CONTENT} =~ /$regex/;
print $1; #is there a value? YES
my $old1 = $1;
$store{URL} =~ s/$param/$old1/;
非常感谢。这很有效。我在玩括号,但我不认为1美元被重置。棘手的您可能会考虑<代码> S/\Q$PARAM\E/OLD1/1/代码>,如果有任何可能,<代码> $PARAM < /C>将包含元字符。谢谢!!!这很有效。我在玩括号,但我不认为1美元被重置。棘手的您可能会考虑<代码> S/\Q$PARAM\E/OLD1/<代码>,如果有任何可能,<代码> $PARAM < /C> >将包含元字符。