Perl regexp部分替换

时间:2013-09-21 19:42:06

标签: regex string perl replace

我想替换字符串中数字的所有实例,但前提是该数字是第n列,其中列是以空格分隔的。

这是我到目前为止所做的:

$_ =~ s/\s+([^\s]+\s+){$numcols}$i(.*)\n/$rep/;

基本上,会有一些空格,然后会有:(非空格(列)后跟空格)$ numcols次。然后,会有$ i,其中$ i是我要替换的数字,后跟一些我不关心的字符和换行符。但是,我不想用$ rep替换所有这些,而只是$ i。我该怎么做?

1 个答案:

答案 0 :(得分:2)

这样的事情:

$_ =~ s/^(\s+(?:[^\s]+\s+){$numcols})$i/$1$rep/;

我们将$i之前的所有内容作为一个组(在其中间使用非?:表示非捕获组)进行捕获。我们保留所有这些,只替换$i,并留下其余的字符串。