Когда вы используете одинарные кавычки, вы указываете PowerShell использовать строковый литерал, означающий, что все, что находится между открывающей и закрывающей кавычками, должно интерпретироваться буквально.
Когда вы используете двойные кавычки, PowerShell будет интерпретировать определенные символы внутри двойных кавычек.
См. get-help about_quoting_rules
или нажмите здесь .
Знак доллара имеет особое значение в регулярных выражениях и в PowerShell. Вы хотите использовать одинарные кавычки, если хотите использовать знак доллара в качестве регулярного выражения.
В вашем примере регулярное выражение a(\w)
соответствует букве 'a', а затем слово-символ, захваченное в обратной ссылке # 1. Поэтому, когда вы заменяете на $1
, вы заменяете совпавший текст ab
обратным ссылочным совпадением b
. Итак, вы получите bc
.
Во втором примере с использованием двойных кавычек PowerShell интерпретирует "$1"
как строку с переменной $1
внутри. У вас нет переменной с именем $1
, поэтому она равна нулю. Таким образом, регулярное выражение заменило ab
на ноль, поэтому вы получаете только c
.