PowerShellの-match
演算子は、文字列に対してパターンマッチングを行う際に使用されます。
特にログ解析や文字列操作で役立つ便利な機能です。
基本的な使い方から応用的なテクニックまでを解説します。
基本的な-matchの使い方
-match
は、指定した文字列が正規表現に一致するかを確認する演算子です。以下は基本的な構文です。
$string -match "パターン"
この式は、$string
が正規表現"パターン"
に一致する場合に$true
を返し、一致しない場合は$false
を返します。
単純な一致の確認
$string = "Hello, World!"
if ($string -match "World") {
Write-Output "一致しました!"
} else {
Write-Output "一致しませんでした。"
}
上記のコードでは、$string
に「World」という文字列が含まれているため、"一致しました!"
が出力されます。
-matchでの結果の取得
-match
を使用すると、一致した内容が自動変数$Matches
に格納されます。$Matches
はハッシュテーブルとして扱われ、キー0
には一致した全体の文字列、他のキーには正規表現のキャプチャグループの値が含まれます。
$Matchesの活用
$string = "Error: File not found"
if ($string -match "Error: (.+)") {
Write-Output "エラー内容: $($Matches[1])"
}
この場合、正規表現"Error: (.+)"
に一致した部分が$Matches[1]
に格納され、以下が出力されます。
エラー内容: File not found
大文字小文字の区別
デフォルトでは、-match
は大文字と小文字を区別しません。大文字小文字を区別したい場合は、-cmatch
を使用します。
大文字小文字を区別するマッチング
$string = "Hello, World!"
if ($string -cmatch "world") {
Write-Output "一致しました!"
} else {
Write-Output "一致しませんでした。"
}
このコードでは、大文字小文字が区別されるため、"一致しませんでした。"
が出力されます。
配列に対する-match
-match
を配列に使用すると、一致するすべての要素を抽出できます。
配列のフィルタリング
$array = @("apple", "banana", "cherry", "grape")
$result = $array -match "a"
Write-Output $result
上記コードでは、「a」を含む要素が抽出され、以下が出力されます。
apple
banana
grape
複数条件の正規表現
複数の条件を正規表現で扱う例です。
$string = "User ID: 12345, Status: Active"
if ($string -match "User ID: (\d+), Status: (\w+)") {
Write-Output "ID: $($Matches[1]), 状態: $($Matches[2])"
}
以下の出力が得られます。
ID: 12345, 状態: Active
まとめ
PowerShellの-match
は、文字列操作やログ解析に非常に便利な機能です。効率的にスクリプトを作成できるようになります。