gpt4 book ai didi

regex - PowerShell:-replace、regex 和 ($) 美元符号问题

转载 作者:行者123 更新时间:2023-12-04 23:28:01 26 4
gpt4 key购买 nike

我正在将数千行批处理代码转换为 PowerShell。我正在使用正则表达式来帮助完成这个过程。问题是代码的一部分是:

$`$2

更换后只显示 $2并且不会扩展变量。我还在替换的第二部分使用了单引号,而不是转义变量,结果相同。
$origString = @'
IF /I "%OPERATINGSYSTEM:~0,6%"=="WIN864" SET CACHE_OS=WIN864
...many more lines of batch code
'@

$replacedString = $origString -replace "(IF /I `"%)(.+)(:.+%`"==`")(.+`")(.+)","if ( $`$2 -match `"^`$4 ) {`$5 }"

$replacedString

最佳答案

你可以尝试这样的事情:

$origString -replace "(IF /I `"%)(.+)(:.+%`"==`")(.+`")(.+)",'if ($$$2 -match "^$4" ) {$5 }'

请注意 $$$2 .计算结果为 $$2的内容.

一些代码来向您展示差异。自己试试:
'abc' -replace 'a(\w)', '$1'
'abc' -replace 'a(\w)', "$1" # "$1" is expanded before replace to ''
'abc' -replace 'a(\w)', '$$$1'
'abc' -replace 'a(\w)', "$$$1" #variable $$ and $1 is expanded before regex replace
#$$ and $1 don't exist, so they are expanded to ''

$$ = 'xyz'
$1 = '123'
'abc' -replace 'a(\w)', "$$$1`$1" #"$$$1" is expanded to 'xyz123', but `$1 is used in regex

关于regex - PowerShell:-replace、regex 和 ($) 美元符号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com