スポンサーリンク

【PowerShell】-matchの使い方

記事内に広告が含まれています。

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は、文字列操作やログ解析に非常に便利な機能です。効率的にスクリプトを作成できるようになります。

タイトルとURLをコピーしました