在perl中我有一个长字符串,但这里是重要部分$abc = "...Testvalue1 100...";
有没有办法在Testvalue#之后立即使用Regex搜索数字并将其替换为变量?
这是我到目前为止所做的:
my $abc = "...Testvalue1 100...";
for my $i (1..100) {
$abc =~ s/Testvalue\d+\W+(\d+)/$i/;
print $abc . "\n";
}
不幸的是,这会将整个匹配替换为$i
,而不仅仅是(\ d +)的第一场比赛。有没有办法做到这一点?
我想要的输出是:
Testvalue1 1
Testvalue1 2
...
Testvalue1 100
答案 0 :(得分:5)
如果你正在使用Perl 5.10或更新版本:
$abc =~ s/ Testvalue \d+ \s+ \K \d+ /$i/x;
(\K
的助记符:"保留"左边的所有内容)
如果您不是:
$abc =~ s/ ( Testvalue \d+ \s+ ) \d+ /$1$i/x;
(捕获您不想丢失的数据)。
答案 1 :(得分:1)