这真让我发疯!请感激关于发生的事情的任何指示!
$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 '\$[^.]+', "'$&'"
见证明。
说明
--------------------------------------------------------------------------------
\$ '$'
--------------------------------------------------------------------------------
[^.]+ any character except: '.' (1 or more times
(matching the most amount possible))
的$&
是整场比赛的占位符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句