【发布时间】:2012-08-26 08:18:08
【问题描述】:
我对这个有点迷茫。无论出于何种原因,powershell 中的替换函数都不能很好地处理以 $ 符号结尾的变量。
命令:
$var='A#$A#$'
$line=('$var='+"'"+"'")
$line -replace '^.+$',('$line='+"'"+$var+"'")
预期输出:
$line='A#$A#$'
实际输出:
$line='A#$A#
【问题讨论】:
-
这里还有其他事情 - 此代码有一个尾随 $ 并且工作正常:
'$test$' -replace '^.+$', 'TEST$' -
看起来不仅仅是尾随的 $ 这就是问题所在。这是尾随的 $ 与 ' 组合形成特殊的 $' 正则表达式变量。 $' 代表比赛结束后的一切。由于您的正则表达式匹配整个字符串,因此匹配后没有任何内容,因此 $' 被任何内容替换。我正在尝试几种不同的转义方式来防止这种行为,但还没有找到正确的方法。
-
更好的问题 - 你想做什么?坦率地说,这些线条看起来就像你不知道自己在做什么。
-
你不会用以
$结尾的东西替换。您正在替换以$'结尾的具有特殊含义的东西
标签: regex string powershell replace