正则表达式和 PowerShell

regex and PowerShell

我有这个 PowerShell 脚本,它会替换配额内的字符串。

$filecontent = "[assembly: AssemblyCopyright(""Copyright © 2014-2015"")]"

$CopyrightRegex = "AssemblyCopyright(.+)"  
$toReplace = '"somethingToReplace"'                    
$result = $filecontent -replace $CopyrightRegex, "AssemblyCopyright($toReplace)" 
Write-Host $result

结果是

[assembly: AssemblyCopyright("somethingToReplace")

但我例外:(最后一个 ] 不见了)

[assembly: AssemblyCopyright("somethingToReplace")]

你能指点我吗,我错过了什么?谢谢。

通过使用 AssemblyCopyright(.+),您的正则表达式会消耗整个字符串,包括最后的 ]。使用以下内容可能会更好:

$filecontent = '[assembly: AssemblyCopyright("Copyright © 2014-2015")]'
$toReplace = '"something"'
$result = $fileContent -replace "(.*AssemblyCopyright.*)\([^)]+\)(.*)","`($toReplace)`"
write-host $result

虽然比较复杂,但它会抓取("Copyright © 2014-2015")前后的所有内容,并将它们放入捕获组中。然后可以将它们与新内容一起用于替换 ($toReplace)