PowerShell: 文字列を置換する Replace(), -replace演算子

PowerShellで文字列を置換する場合、 StringクラスのReplace()メソッドを 使う方法や、-replace演算子を使う方法があります。 シンプルに置換したい場合はReplaceメソッドで十分ですし、 正規表現による置換を行いたい場合は-replace演算子を使います。

Replaceメソッド

Replaceメソッドは.NET Framework Stringクラスのメソッドです。 正規表現は使えません。

書式
文字列.Replace(置換前文字列, 置換後文字列)

第1引数に置換前の文字列を指定し、 第2引数に置換後の文字列を指定します。 一致したすべての置換前文字列を置換後文字列に置き換えます。
「最初の1つだけ置換する」といった回数指定はできません。

次のサンプルコードはReplaceメソッドを使った文字列置換の例です。

$s = "abcabc"

$s.Replace("a", "z") # zbczbc

$s.Replace("x", "z") # abcabc

1番目は一致した文字列が置換され、 2番目は一致しないので元々の文字列が返されます。

大文字・小文字の区別

デフォルトではReplaceメソッドは大文字・小文字を区別します。 区別せずに置換したい場合は第3引数に「1」を指定します。

# 大文字・小文字の区別

$s = "abcabc"

# デフォルトでは区別する
$s.Replace("A", "z")    # abcabc

# 区別しない
$s.Replace("A", "z", 1) # zbczbc

-replace演算子

正規表現を使って文字列を置換する場合は、 PowerShellの-replace演算子を使います (正規表現を使わなくても大丈夫です)。

書式
文字列 -replace 置換前文字列, 置換後文字列

-replaceの後に置換前文字列(正規表現)、 カンマで区切って置換後の文字列を記述します。 一致したすべての置換前文字列を置換後文字列に置き換えます。

次のサンプルコードは-replace演算子を使った文字列置換の例です。

$s = "abcabc"

$s -replace ".bc", "zbc" # zbczbc

$s -replace "a.b", "azb" # abcabc

1番目の正規表現は一致するので置換され、 2番目は一致しないので元々の文字列になります。

大文字・小文字の区別

デフォルトでは-replace演算子は大文字・小文字を区別しません。 Replaceメソッドとは逆になります。

区別する場合はreplaceの前に「c」を付けて「-creplace」と記述します。 次のサンプルコードでは、1番目は大文字・小文字を区別せず、 2番目は区別しています。

# 大文字・小文字の区別

$s = "abcabc"

# デフォルトでは区別しない
$s -replace "A", "z"  # zbczbc

# 区別する
$s -creplace "A", "z" # abcabc

参考サイト
String.Replace メソッド (System) | Microsoft Docs
比較演算子について - PowerShell | Microsoft Docs

PowerShell