使用下面的代码解析文本文档会匹配'333'的每个实例,但我希望只更改下面的三个示例。
(Get-Content input.json) | ForEach-Object {
$_ -replace '333', '666'
} | Set-Content output.json
这应该改变:
这应保持不变:
PowerShell正则表达式的解决方案是什么?
答案 0 :(得分:4)
您可以使用
(?i)(?<=\b(?:se)?)333\b
请参阅regex demo
<强>详情
(?i)
- 不区分大小写的修饰符(?<=\b(?:se)?)
- 333
之前必须有单词边界和anoptional substrin se
333
- 文字子字符串\b
- 一个尾随字边界。Powershell测试:
PS> $s = "se333 SE333 333 1212333 3331212 333asda asd333"
PS> $s -replace '(?i)(?<=\b(?:se)?)333\b', '666'
se666 SE666 666 1212333 3331212 333asda asd333