正则表达式和 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)
我有这个 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)