【发布时间】:2020-10-05 06:41:45
【问题描述】:
这快把我逼疯了!希望能提供任何关于发生了什么的指示!
$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,非常感谢有人告诉我为什么这不起作用。谢谢!
【问题讨论】:
-
感谢您提供的丰富细节。确实很有帮助!是的,我认为 -replace 只会替换字符串文字。我从来没有想过开头的 $ 可能会被解释。非常感谢。
标签: regex powershell