操纵正则表达式匹配替换

时间:2014-05-25 17:55:06

标签: regex perl

我想在第一个与正则表达式匹配的子字符串中添加括号。我试图通过使用$1变量来实现这一点,但是在尝试编译时遇到错误。

我的错误在哪里,是否有更方便的方式来获得比赛的价值?

代码:

use strict;
use warnings;

print "Hello world!\n";
my $str = "a aa";

$str =~ s/a/\($1\)/;
print "$str \n";

错误:

Use of uninitialized value $1 in concatenation (.) or string 
     at /home/bc/projects/regex.pl line 8.

输出应为:

(a) aa

1 个答案:

答案 0 :(得分:2)

您需要在正则表达式中使用capturing parens

$str =~ s/(a)/($1)/;

注意:您不需要在s///的RHS(右侧)中转义正则表达式特殊字符,如括号。