gpt4 book ai didi

variables - 引用-替换和变量

转载 作者:行者123 更新时间:2023-12-02 09:43:08 26 4
gpt4 key购买 nike

这是对我之前问题的回应:

PowerShell: -replace, regex and ($) dollar sign woes

我的问题是:为什么这两行代码有不同的输出:

'abc' -replace 'a(\w)', '$1'
'abc' -replace 'a(\w)', "$1"

根据下面的两篇文章,为什么单引号中的变量“$1”不被用作文字字符串?单引号中的所有内容都应该被视为文字文本字符串,对吧?

http://www.computerperformance.co.uk/powershell/powershell_quotes.htm
http://blogs.msdn.com/b/powershell/archive/2006/07/15/variable-expansion-in-strings-and-herestrings.aspx

最佳答案

当您使用单引号时,您告诉 PowerShell 使用字符串文字,这意味着开始和结束引号之间的所有内容都将按字面解释。

当您使用双引号时,PowerShell 将解释双引号内的特定字符。

请参阅获取有关_quoting_rules的帮助或单击here .

美元符号在正则表达式和 PowerShell 中具有特殊含义。如果您打算将美元符号用作正则表达式,则需要使用单引号。

在您的示例中,正则表达式 a(\w) 匹配字母“a”,然后匹配反向引用 #1 中捕获的单词字符。因此,当您替换为 $1 时,您将用反向引用匹配 b 替换匹配文本 ab。所以你得到了bc

在使用双引号的第二个示例中,PowerShell 将 "$1" 解释为内部包含变量 $1 的字符串。您没有名为 $1 的变量,因此它为 null。因此,正则表达式将 ab 替换为 null,这就是为什么你只得到 c

关于variables - 引用-替换和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com