string - 使用通配符替换 PowerShell 字符串

标签 string powershell replace

我需要通过 PowerShell 替换 SQL 文件中的版本号。在文件中它看起来像这样:

values
   ('Current', '15.7.1.0'),
   ('New', '15.7.22.0')

我需要将其替换为当前版本,但由于我不知道当前版本号是什么,也不知道其确切长度(位数可能会随着前导的变化而变化)不使用零),我需要使用通配符,而我尝试的方法不起作用。

目前这就是我正在尝试的:

$content = Get-Content C:\Users\user\Desktop\sql\file.sql
$newContent = $content -replace "'Current', '*'", "'Current', '$newVersion'"

它实际上找到了它并替换了它,但由于某种原因并不是全部。运行后,我得到的是:

values
   ('Current', '16.6.21.0'15.7.1.0'),
   ('New', '15.7.22.0')

因此它肯定会在文件中找到正确的位置并替换其中的某些位置,但实际上并没有替换版本号。谁能告诉我我做错了什么?

最佳答案

正如@PetSorAl所说,-replace使用通配符而不是正则表达式。

以下是基于您的示例。

示例

$content = @"
values
   ('Current', '15.7.1.0'),
   ('New', '15.7.22.0')
"@

$newVersion = '16.6.21.0'
$newContent = $content -replace "'Current', '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'", "'Current', '$newVersion'"
Write-host $newContent

结果

values
   ('Current', '16.6.21.0'),
   ('New', '15.7.22.0')

关于string - 使用通配符替换 PowerShell 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706674/

相关文章:

python-3.x - 如何在不计算文本格式的情况下获取字符串的长度

powershell - 在使用参数集名称的同时使用$ args

css - 如何用 CSS 替换文本?

azure - 在 Azure Powershell Runbook 中使用 "Parsed-HTML"时, "invoke-webrequest"字段为空

sql-server - SQL 命令使用 Invoke-SQLCMD 执行两次

shell - 使用 sed 找到匹配项时替换整行

java - ReplaceAll 正则表达式匹配所有模式,无需特定字符串

python - 将数据帧 'df1' 的字符串列与数据帧 'df2' 的另一个字符串列进行比较,在此基础上比较其他列

无法将字符串复制到 C 中的字符串数组

javascript - 过滤字符串数组