regex - 替换为编号值

标签 regex perl powershell

这个问题在这里已经有了答案:





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 的新值,所以每次它增加它时,$i0 .

关于regex - 替换为编号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195382/

相关文章:

azure - New-AzWebApp 选择 .NET Core 的堆栈设置

powershell - DynamoDB API 过滤扫描不返回任何结果

android - 规则与正则表达式的组合

regex - BASH 正则表达式 {} 混淆

javascript - 如何忽略由句号、升级或问号结尾的句子组成的文本中的 .com .net 或 .org 成句子数组?

regex - ($pre =~/\./&& $pre =~/\p{IsAlpha}/) 在 Moses Tokenizer 中是什么意思?

python - 用于匹配 C 的多行预处理器语句的正则表达式

perl - 如何使用 DEBUG_LEAKING_SCALARS 编译 perl?

macos - 苹果操作系统 :/usr/bin/env: bad interpreter: Operation not permitted

powershell - "RenewDHCPLease()"和 "IPConfig/renew"之间的区别?