Perl正则表达式 - 匹配数字旁边的变量

时间:2016-10-13 13:18:48

标签: regex perl

我希望在rexeg替换表达式中使用数字后缀组匹配。如何将匹配变量与动作数字分开?

如果我想要

s/([0-9]+)/$11/g;

我试过

1

但如果我在$1后直接放置$11,perl会将其解释为${1}1(理所当然)。在bash中,我本可以编写-Server,但这似乎并不适用于perl。

编辑:结果证明@toolic是对的,s /([0-9] +)/ $ {1} 1 / g;确实有效,我的shell有一个逃避问题。如果您将该答案作为正确答案发布,我将接受它!感谢

2 个答案:

答案 0 :(得分:1)

如评论中所述,反向引用的可选花括号(例如${1}而不是$1)在perl中有效。

<强> Demo here

答案 1 :(得分:0)

您可以使用正则表达式:(\d+)并将后缀1替换为捕获组

Demo

示例:

<?php
$string = 'hello 55 friends i am 29 happ';
$pattern = '/(\d+)/';
$replacement = '${1}1';
echo preg_replace($pattern, $replacement, $string);
?>