Regex 为什么powershell会删除其中一个'$';何时更换?
我一直在挠头,最终只用了String.Replace,但是,我想知道Powershell在做什么,有人能给我解释一下吗Regex 为什么powershell会删除其中一个'$';何时更换?,regex,powershell,Regex,Powershell,我一直在挠头,最终只用了String.Replace,但是,我想知道Powershell在做什么,有人能给我解释一下吗 >"aaa" -replace "aaa", 'GG$$`~~' 结果: GG$`~~ 而不是 GG$$`~~ 我的印象是单引号阻止了字符串中内容的扩展,这与正则表达式有关吗?如果我在每一美元和背面打勾之间放点东西,它会起作用,但那不是我想要的 编辑: 这似乎是多种因素的结合: "aaa" -replace "aaa", '$$' --> "$" "aaa"
>"aaa" -replace "aaa", 'GG$$`~~'
结果:
GG$`~~
而不是
GG$$`~~
我的印象是单引号阻止了字符串中内容的扩展,这与正则表达式有关吗?如果我在每一美元和背面打勾之间放点东西,它会起作用,但那不是我想要的
编辑:
这似乎是多种因素的结合:
"aaa" -replace "aaa", '$$' --> "$"
"aaa" -replace "aaa", '$`' --> ""
我仍然不明白它为什么这样做,尽管在普通正则表达式中,一个美元符号(“$”)表示字符串的结尾 在上面的示例中,您在带$符号的字符串后面有回勾,因此它不会在该字符串上转义: 根据这里的说法:
它应该是:“GG`$~`在普通正则表达式中,美元符号(“$”)表示字符串的结尾 在上面的示例中,您在带$符号的字符串后面有回勾,因此它不会在该字符串上转义: 根据这里的说法:
它应该是:“GG`$~`在replace
$
中表示反向引用
例如,如果您使用:
"aaa" -replace "(aaa)", 'GG$1`~~'
GGaaa`~~
使用:
"aaa" -replace "(aaa)", 'GG$$1`~~'
GG$1`~~
因此,真正放置$
意味着您正在放置一个文本$
字符。如果变量不存在
"aaa" -replace "aaa", 'GG$`~~'
GG~~
shell尝试查找变量$`
,但由于它不存在,因此会得到一个空字符串
所以,为了
GG$$`~~
您必须使用4$:
"aaa" -replace "(aaa)", 'GG$$$$`~~'
GG$$`~~
每对$$
表示一个文本$
用同样的逻辑
"aaa" -replace "aaa", '$$' --> "$"
"aaa" -replace "aaa", '$`' --> "" //Because the variable $` doesn't exist, it's 'null'.
在replace
$
中,表示反向引用
例如,如果您使用:
"aaa" -replace "(aaa)", 'GG$1`~~'
GGaaa`~~
使用:
"aaa" -replace "(aaa)", 'GG$$1`~~'
GG$1`~~
因此,真正放置$
意味着您正在放置一个文本$
字符。如果变量不存在
"aaa" -replace "aaa", 'GG$`~~'
GG~~
shell尝试查找变量$`
,但由于它不存在,因此会得到一个空字符串
所以,为了
GG$$`~~
您必须使用4$:
"aaa" -replace "(aaa)", 'GG$$$$`~~'
GG$$`~~
每对$$
表示一个文本$
用同样的逻辑
"aaa" -replace "aaa", '$$' --> "$"
"aaa" -replace "aaa", '$`' --> "" //Because the variable $` doesn't exist, it's 'null'.
但是我想要结果中的两个$signs和backtick,也不是它匹配的模式,而是替换中包含字符的字符串,为什么该字符串要服从regex的“字符串结束”特性?我猜这是因为替换还可以包含regex(标准),所以它只是经过与搜索字符串相同的处理,但我希望结果中有两个$signs和backtick,而且它匹配的不是模式,而是字符串中有字符的替换,为什么该字符串要服从正则表达式的“字符串结束”功能?我猜这是因为替换也可以包含正则表达式(标准),所以它只需要经过与搜索字符串相同的处理,您可能需要转义
$
(注意$
是正则表达式中的一个特殊字符).Check看起来你是对的,我只是没想到要用替换字符串来处理它…所以问题只是$$,“aaa”-替换“aaa”,“$#GG$$$``~~~'->$#GG$`~
你可能需要转义$
(注意,$
在regex中是一个特殊字符)。Check看起来你是对的,我只是没想到要用替换字符串来处理它……所以问题只出在$$上,“aaa”-替换“aaa”、“$#GG$$``~~'->$#GG$`~~
谢谢!这是我需要的关键信息……”反向引用“:)谷歌在尝试搜索符号时没有太大帮助。谢谢!这是我需要的关键信息……”反向引用“:)谷歌在搜索符号时没有太大帮助。