我想替换字符串中数字的所有实例,但前提是该数字是第n列,其中列是以空格分隔的。
这是我到目前为止所做的:
$_ =~ s/\s+([^\s]+\s+){$numcols}$i(.*)\n/$rep/;
基本上,会有一些空格,然后会有:(非空格(列)后跟空格)$ numcols次。然后,会有$ i,其中$ i是我要替换的数字,后跟一些我不关心的字符和换行符。但是,我不想用$ rep替换所有这些,而只是$ i。我该怎么做?
答案 0 :(得分:2)
这样的事情:
$_ =~ s/^(\s+(?:[^\s]+\s+){$numcols})$i/$1$rep/;
我们将$i
之前的所有内容作为一个组(在其中间使用非?:
表示非捕获组)进行捕获。我们保留所有这些,只替换$i
,并留下其余的字符串。