もくじ
📝 はじめに
PowerShellで文字列を扱っていると、
「特定の文字が含まれているか判定したい」
「条件に合う行だけを抽出したい」
と感じる場面はよくあります。
そんなときに使われるのが
-match 演算子です。
この記事では、PowerShellで正規表現を使って文字列が一致するかを判定する基本を、
初心者にも分かりやすく解説します。
- ログから特定のキーワードを含む行を探したい
- 文字列が条件に合うかを判定したい
- Where-Object と組み合わせて抽出したい
✅ このコマンドでできること(要点)
- 文字列が条件に一致するかを判定できる
- 正規表現を使った柔軟な検索ができる
- true / false の判定結果を得られる
- Where-Object などと組み合わせて使える
✅ -match でできること
-match は、
左側の文字列が、右側で指定したパターンに
一致するかどうかを判定する演算子です。
単純な部分一致だけでなく、
正規表現を使った高度な条件判定ができるのが特徴です。
🧩 基本構文
"文字列" -match "パターン"
一致した場合は True、
一致しない場合は False が返ります。
▶ 基本的な使い方(まずこれだけ)
🔹 特定の文字が含まれているか判定する
"PowerShell" -match "Shell"
True が返れば、
指定した文字列が含まれていることを意味します。
🔹 一致しない場合を確認する
"PowerShell" -match "Python"
この場合は False が返ります。
🛠 よく使われる指定例
🔹 大文字・小文字を区別せず判定する
"ERROR" -match "error"
-match は
デフォルトで大文字・小文字を区別しません。
🔹 正規表現を使って数字を判定する
"file123.txt" -match "\d+"
数字が含まれていれば True になります。
💼 実務でよく使う使用例(応用)
🔹 ログからエラー行を抽出する
Get-Content log.txt | Where-Object { $_ -match "error" }
error を含む行だけが抽出されます。
🔹 ファイル名で条件判定する
Get-ChildItem | Where-Object { $_.Name -match "^test" }
test で始まるファイル名だけを取得できます。
- Where-Object と組み合わせて抽出
- ForEach-Object で一致行を処理
- Select-Object で列を整理
🧩 よくある勘違い・つまずきポイント
- 完全一致ではなく「部分一致」である
- 正規表現の記号の意味を誤解しやすい
- 戻り値は True / False である
- 大小文字を区別したい場合は別指定が必要
- 文字列以外では意図しない結果になることがある
🔄 cmdとの違いについて
cmd では文字列判定に
find や findstr を使いますが、
条件分岐と組み合わせるのは少し手間がかかります。
PowerShell の -match は、
判定結果をそのまま条件式として使える点が大きな違いです。
⚠ エラー・うまく動かないときの確認ポイント
- 正規表現の記号が正しいか
- ダブルクォート・シングルクォートの違い
- 判定対象が文字列になっているか
- 意図せず部分一致になっていないか
🧠 注意点
-match は非常に強力ですが、
正規表現を複雑にしすぎると可読性が下がります。
実務では「分かりやすさ」を意識して使うのがおすすめです。
📌 まとめ
- -match は文字列が条件に一致するかを判定する演算子
- 正規表現による柔軟な検索が可能
- Where-Object と組み合わせると実務で強力
- 次は -like や -notmatch と比較すると理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 文字列が一致するか判定したい
- 正規表現で検索したい
