使用正则表达式增加PowerShell中的数字

Mic*_*and 4 regex powershell

我有一些包含字符串的文件

#define PROG_HWNR "#37595"
#define C_HWPROG_NR "24499"
#define PROG_HWNR "#39917"
#define C_HWPROG_NR "24901"
#define C_HWPROG_NR "37598"
Run Code Online (Sandbox Code Playgroud)

我把它们放在一个名为regex-test的文件中(用于测试目的)

我想要做的是将每个数字增加一个.还有其他#defines和数字不能增加,我有一个需要增加的所有变量名称的列表.

我已经有一个PowerShell命令了

Get-Content regex-test | foreach { [regex]::match($_,'"#?(\d+)"$').groups[1].value }
Run Code Online (Sandbox Code Playgroud)

返回数字.它们现在只需要用[value] + 1替换

你能为我指出正确的方向吗?谢谢!

Dav*_*vic 8

为什么不呢:

$tmp = Get-Content regex-test | foreach { $n = [regex]::match($_,'"#?(\d+)"$').groups[1].value; if ($n) {$_ -replace "$n", ([int32]$n+1)} else {$_}; }
Run Code Online (Sandbox Code Playgroud)

然后保存$tmp.

  • 如果用`(1 + $ n)`反转`([int32] $ n + 1)`,由于powershell的强制功能,你不需要强制转换. (6认同)