PowerShellでは、文字列を置換するために-replace
演算子を使用します。
通常の文字列置換だけでなく、正規表現を用いて柔軟にパターンを指定し、部分文字列を置換することができます。
-replace演算子の基本
基本構文
$string -replace 'パターン', '置換後の文字列'
パターン
置換対象の正規表現パターン置換後の文字列
正規表現にマッチした部分を置き換えるための文字列
正規表現での置換例
次に、正規表現を用いてどのように文字列を操作できるか具体例を見てみましょう。
例1: 数字を全てアスタリスクに置換
$string = "PowerShell version 7.1 is released in 2020."
$result = $string -replace '\d', '*'
$result
結果
PowerShell version *.* is released in ****.
\d
は正規表現で数字を表します。
この例では文字列中のすべての数字を *
に置換しています。
例2: メールアドレスの一部をマスクする
$email = "user@example.com"
$maskedEmail = $email -replace '(^\w)[^@]*', '$1*****'
$maskedEmail
結果
u*****@example.com
(^\w)
はメールアドレスの最初の文字をキャプチャしています。[^@]*
は@
の前のすべての文字を表します。$1
はキャプチャした最初の文字を再利用しています。
正規表現オプションを利用する
-replace
演算子は正規表現パターンに加え、オプションを設定することもできます。
例えば、大文字小文字を無視して置換を行いたい場合に、正規表現にオプションを指定します。
例3: 大文字小文字を無視して置換
$string = "PowerShell is Amazing."
$result = $string -replace '(?i)powershell', 'Script'
$result
結果
Script is Amazing.
(?i)
は正規表現の中で大文字小文字を無視するオプションです。
これにより、powershell
という単語が大文字小文字に関係なく置換されます。
マッチした文字列を動的に変換
正規表現の置換には、マッチした文字列を動的に変換するためのメソッドを利用することが可能です。
置換時にスクリプトブロックを使用することで、より柔軟な変換が可能になります。
おわりに
PowerShellの-replace
演算子を使うと、正規表現を利用した柔軟な文字列操作が可能です。