Powershell替换文本文件中多次出现的正则表达式

时间:2018-08-24 22:25:53

标签: regex powershell replace match

我的书索引很大,要给所有数字减去2。每行可能会有更多数字,例如:

  

姓氏,姓名12,17-33
   第二,名字75

我需要他们成为

  

姓氏,姓名10,15-31
   二,名字73

为了完成任务,我使用了周围的引用编写了这个小脚本:

`$trova = "[0-9]+(?![^<>]*>)"
(Get-Content D:\path\document.xml) |
Foreach-Object {if ($_ -match "$trova"){
$cambia= $matches[0]
$cambia-=2
$_ -replace $trova, $cambia}
} | 
Set-Content D:\path\document2.xml`

问题是我只能成功匹配每行的第一个,而不是所有替换都具有相同的编号,因此

  

姓氏,姓名10,10-10
   二,名字73

我有点卡住了。我已经看到一些使用

的建议
Select-String $trova -input $string -AllMatches

但是我看不到如何在替换之前进行数学运算以使其正常工作。该文件是docx文档中的xml(我需要保留样式),但是我决定直接从Powershell而不是使用Word.Application,因为它看起来更容易(这就是为什么我的regex避免使用标签内的数字)。感谢您的任何建议。

0 个答案:

没有答案