powershell腳本如下:
$verNumber ="123"
# Replace last digit of AssemblyVersion
$assemblyInfo = $assemblyInfo -replace "^\[assembly: AssemblyVersion\(`"([0-9] )\.
([0-9] )\.([0-9] )\.[0-9] `"\)]",
('[assembly: AssemblyVersion("$1.$2.$3.' $verNumber '")]')
# Replace last digit of AssemblyFileVersion
$assemblyInfo = $assemblyInfo -replace
"^\[assembly: AssemblyFileVersion\(`"([0-9] )\.([0-9] )\.([0-9] )\.[0-9] `"\)]",
('[assembly: AssemblyFileVersion("$1.$2.$3.' $verNumber '")]')
這是我檔案中的內容。
// [assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.1.0.123")]
[assembly: AssemblyFileVersion("1.1.0.123")]
第 2 行和第 3 行已更新,但我正在嘗試更新 1,如何在正則運算式中獲取該模式?
uj5u.com熱心網友回復:
這應該是您想要完成的正則運算式的簡化版本。有關詳細資訊,請參閱此 regex101 鏈接。
$verNumber = 123
$assemblyinfo = @'
// [assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.1.0.123")]
[assembly: AssemblyFileVersion("1.1.0.123")]
'@
$assemblyinfo -replace '(?<=(^//\s*\[assembly: AssemblyVersion\("(\d \.){3}))\d ', $verNumber
uj5u.com熱心網友回復:
您可以在一次替換中使用 2 個捕獲組和模式中的一個可選部分用于前導斜杠以及另一個可選部分用于File
(?m)^((?:// )?\[assembly: Assembly(?:File)?Version\("(?:\d \.){3})[0-9] ("\)])$
模式匹配:
(?m)多行的行內修飾符^字串的開始(捕獲組 1(?:// )?可選匹配//
\[assembly: Assembly(?:File)?Version匹配[assembly: AssemblyVersion或[assembly: AssemblyFileVersion\("匹配("(?:\d \.){3}匹配 3 個重復的 1 數字 0-9 和一個點)關閉組 1[0-9]匹配應替換的 1 個數字("\)])捕獲組 2,匹配)]$字串結束
正則運算式演示
例如,讀取包含示例字串的 file.txt:
$verNumber ="123"
$assemblyInfo = Get-Content -Raw file.txt
$assemblyInfo = $assemblyInfo -replace "(?m)^((?:// )?\[assembly: Assembly(?:File)?Version\(`"(?:\d \.){3})[0-9] (`"\)])$", "`${1}$verNumber`${2}"
Write-Output $assemblyInfo
輸出
// [assembly: AssemblyVersion("1.1.0.123")]
[assembly: AssemblyVersion("1.1.0.123")]
[assembly: AssemblyFileVersion("1.1.0.123")]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434562.html
上一篇:從PowerShell創建Azure存盤帳戶給出錯誤
下一篇:Powershell基礎版
