Powershell-替换给出奇怪的行为

印地语

这真让我发疯!请感激关于发生的事情的任何指示!

$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并非常感谢有人告诉我为什么它不起作用。谢谢!

Ryszard捷克

采用

$beta = $alpha -replace '\$[^.]+', "'$&'"

证明

说明

--------------------------------------------------------------------------------
  \$                       '$'
--------------------------------------------------------------------------------
  [^.]+                    any character except: '.' (1 or more times
                           (matching the most amount possible))

$&是整场比赛的占位符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章