お世話になっております。
PowerShell 3.0 を Windows 7 Professional 64bit で使用しています。
PowerShellから呼び出した場合のRegEx クラスに関して、質問があります。
(VB.NET のツール(.NET Framework) ではうまく実行できるので、PowerShell 関連として質問させていただきます)
PowerShell のコマンドラインから、たとえば
"1234512345" | %{[regex]::Replace($_, "(123)", "*$0*")
と入力したとき
*123*45*123*45
と出力されることを期待しているのですが、
**45**45
と表示されてしまいます。
"1234512345" | %{[regex]::Replace($_, "(123)", "*$&*")
*123*45*123*45
と表示されます。
PowerShellからRegEx呼び出した場合、何らかの理由で置き換えパターンに$0 や$1 などは使用できないのでしょうか?
どうも不可解です。
ちなみに
"1234512345" | %{[regex]::Replace($_, "(?<name>123)", "*${name}*")
も
"1234512345" | %{[regex]::Replace($_, "(?`<name`>123)", "*${name}*")
も
**45**45
と表示されて置き換えされません。
理由ご存知の方、恐れ入りますがご教示のほどお願い致します。