gpt4 book ai didi

regex - Powershell -replace 给出奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 23:00:07 25 4
gpt4 key购买 nike

这让我发疯!将不胜感激任何关于发生了什么的指示,请!

$alpha = 'aaa.bbb.$connection.ccc.ddd'
$s = [regex]::match($alpha,"\$.+?(?=\.)").Value

"Alpha is: $alpha"
"Matched chunk is: $s"

$newChunk = "'" + $s + "'"
"New chunk is: $newChunk"

$beta = $alpha -replace $s,$newChunk
"Beta is: $beta"
这会产生以下输出:
Alpha is: aaa.bbb.$connection.ccc.ddd
Matched chunk is: $connection
New chunk is: '$connection'
Beta is: aaa.bbb.$connection.ccc.ddd
我正在尝试识别/匹配以文字“$”开头并继续直到但不包含文字点“。”的路径中的字符序列。字符。在上面的示例代码中,字符串将是“$connection”。
然后我需要将该字符串用单引号括起来,因此在上面的示例中,$newChunk 值将变为 '$connection',包括单引号。
接下来,我需要将匹配的值替换为原始字符串中的新单引号值。无论我尝试什么(与 [regex]::match 方法相同),单引号都会被删除。所以,实际上,我试图转向:
aaa.bbb.$connection.ccc.ddd
进入
aaa.bbb.'$connection'.ccc.ddd
使用 Powershell 7.1,非常感谢有人告诉我为什么这不起作用。谢谢!

最佳答案

采用

$beta = $alpha -replace '\$[^.]+', "'$&'"
proof .
解释
--------------------------------------------------------------------------------
\$ '$'
--------------------------------------------------------------------------------
[^.]+ any character except: '.' (1 or more times
(matching the most amount possible))
$&是整个比赛的占位符。

关于regex - Powershell -replace 给出奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64198435/

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