这个问题在这里已经有了答案:
How do I replace a token with increasing numbers in Perl?
(3 个回答)
6年前关闭。
假设我有一个字符串
$t = "some {great} vacation that {we} had that {year}"
我想用一个编号的值替换占位符:
"some {0} vacation that {1} had that {2}"
我本来期望一个替代品来做到这一点:
$i = 0; $t -replace "{.*?}", "{$([string] ++$i)}"
但我得到的是:
"some {1} vacation that {1} had that {1}"
好像字符串只被评估一次。在 perl 正则表达式中,有一种方法可以为替换值指定一个函数……这是如何在 psh 中完成的?
最佳答案
试试这个:
$i = 0 ; [Regex]::Matches($t,"{.*?}") | %{ ++$i ; $t = $t.Replace($_.Value,"{$i}") } ; $t
我认为问题在于 Regex 引擎永远不会为它找到的每个匹配项获取 $i 的新值,所以每次它增加它时,
$i
是 0
.
关于regex - 替换为编号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195382/