如何覆盖正则表达式中捕获的值

时间:2014-05-19 13:44:35

标签: regex perl

我正在尝试将正则表达式写入应用程序的regex字段以捕获返回代码编号,但我需要转换匹配的文本而不进行替换(替换)匹配。

现在正常的正则表达式是:

RETURN=(?<code>[0-9]+)

其中,在Perl中,RETURN=123产生:

say $+{code}; # 123

现在我需要这个字符串RETURN=MAX来产生值999

say $+{code}; # 999

但我有一些限制:我无法触及背后的代码,也不能使用替换模式s///。它必须是一个简单的(Perl 5.14风格)正则表达式匹配,即,将成为$input_data =~ /$my_regex/;

有没有办法编写正则表达式,以便将捕获的值MAX转换为不同的内容,例如999

1 个答案:

答案 0 :(得分:0)

很容易就像馅饼一样。

只需将$ + {code}复制到本地变量中,然后在本地而不是系统变量上运行

   RETURN=(?<code>[0-9]+)

   say $+{code}; # 123

   my $code = $+{code};

   say $code;  # 123

   $code = 999;

   say $code;  # 999