PowerShell 正規表現 最短チートシート
ファイル操作・テキスト操作で「今すぐ戦力になる」パターンだけをまとめた一覧。
1. 基本構文(これだけで 8 割戦える)
| 目的 | パターン | 説明 |
| 任意の1文字 | . | 改行以外の1文字 |
| 任意の0回以上 | .* | 最もよく使う繰り返し |
| 任意の1回以上 | .+ | 1文字は必須 |
| 0回または1回 | ? | オプション |
| 文字クラス | [abc] | a または b または c |
| 否定クラス | [^abc] | a,b,c 以外 |
| 範囲(数字) | [0-9] | 0〜9 の1文字 |
| 繰り返し | {n,m} | n〜m 回繰り返し |
2. アンカー(行頭・行末・単語境界)
| 目的 | パターン |
| 行頭 | ^ |
| 行末 | $ |
| 単語境界 | \b |
| 非単語境界 | \B |
3. キャプチャ(後で使える“変数”)
| 目的 | パターン | 説明 |
| キャプチャ | (...) | グループ化して値を取る |
| 後方参照 | \1 | 1番目のグループを再利用 |
| 名前付きキャプチャ | (?<name>...) | $matches["name"] で参照 |
4. 先読み(条件分岐の代わり)
| 種類 | パターン | 説明 |
| 肯定先読み | (?=...) | 後ろに ... がある場合だけマッチ |
| 否定先読み | (?!...) | 後ろに ... が無い場合だけマッチ |
5. PowerShell での基本的な使い方
● マッチ判定
"abc123" -match "\d+"
● 抽出($matches を使う)
"abc123" -match "(?<num>\d+)"
$matches["num"] # 123
● 置換
"abc123" -replace "\d+", "###" # "abc###"
● Select-String(ログ解析)
Select-String -Path "app.log" -Pattern "ERROR.*timeout"
6. 実務で毎日使うパターン集
A. 数字
| 目的 | パターン |
| 数字 | \d+ |
| 数字以外 | \D+ |
| 小数 | \d+(\.\d+)? |
| 整数(±) | [+-]?\d+ |
B. 日付
| 形式 | パターン |
| yyyy-mm-dd | \d{4}-\d{2}-\d{2} |
| yyyy/mm/dd | \d{4}/\d{2}/\d{2} |
| yyyy.mm.dd | \d{4}\.\d{2}\.\d{2} |
C. ファイル名・パス
| 目的 | パターン |
| 拡張子取得 | \.(?<ext>[A-Za-z0-9]+)$ |
| パスからファイル名 | [^\\]+$ |
| パスからフォルダ部分 | ^.*\\ |
D. ログ解析で強いパターン
| 目的 | パターン |
| ERROR 行 | ERROR.* |
| IP アドレス | \d{1,3}(\.\d{1,3}){3} |
| 時刻(hh:mm:ss) | \d{2}:\d{2}:\d{2} |
| バージョン番号 | \d+\.\d+\.\d+ |
7. まとめ
- PowerShell のテキスト処理は正規表現前提の設計。
- ここにあるパターンだけで、ファイル操作・ログ解析・文字列整形の大半は片付く。
- あとは必要になったときに少しずつ機能を足していけばよい。
PowerShell -match の基本構文
■ 基本構文
<文字列> -match <正規表現パターン>
左辺の文字列が右辺の正規表現にマッチするかを判定します。
■ 戻り値
- マッチした場合:
$true
- マッチしない場合:
$false
■ マッチ成功時の自動変数 $matches
-match が成功すると、PowerShell は自動的に $matches に結果を格納します。
$matches[0] … マッチした全文
$matches[1] … 1番目のキャプチャグループ
$matches[2] … 2番目のキャプチャグループ
■ 基本例
"Hello123" -match "\d+"
→ $true
→ $matches[0] = 123
■ キャプチャグループの例
"User42" -match "User(\d+)"
→ $matches[0] = User42
→ $matches[1] = 42
PowerShell 正規表現で使える主な記号(メタ文字)
■ 文字クラス・基本記号
| 記号 | 意味 |
. | 任意の1文字 |
\d | 数字(0-9) |
\w | 英数字 + アンダースコア |
\s | 空白文字(スペース、タブなど) |
[abc] | a または b または c |
[^abc] | a,b,c 以外の1文字 |
■ 量指定子(繰り返し)
| 記号 | 意味 |
* | 0回以上の繰り返し |
+ | 1回以上の繰り返し |
? | 0回または1回 |
{n} | n回ちょうど |
{n,} | n回以上 |
{n,m} | n〜m回 |
■ アンカー(位置指定)
| 記号 | 意味 |
^ | 行頭 |
$ | 行末 |
\b | 単語境界 |
\B | 非単語境界 |
■ グループ化・キャプチャ
| 記号 | 意味 |
( ) | キャプチャグループ |
(?: ) | 非キャプチャグループ |
| | OR(A または B) |
■ 先読み・後読み(高度)
| 記号 | 意味 |
(?=...) | 肯定の先読み(後ろに ... が続く) |
(?!...) | 否定の先読み(後ろに ... が続かない) |
(?<=...) | 肯定の後読み(前に ... がある) |
(?<!...) | 否定の後読み(前に ... がない) |
■ エスケープが必要な記号
正規表現で特別な意味を持つため、文字として扱う場合は \ でエスケープします。
| 記号 | 例 |
. | \. |
* | \* |
+ | \+ |
? | \? |
( ) | \( \) |
[ ] |
\[ \]
|
{ } | \{ \} |
| | \| |
^ | \^ |
$ | \$ |
PowerShell 正規表現:追加メタ文字(.NET Regex)
■ 特殊な文字クラス
| 記号 | 意味 |
\D | 数字以外 |
\W | 英数字・アンダースコア以外 |
\S | 空白以外 |
\p{Lu} | Unicodeカテゴリ:大文字 |
\p{Ll} | Unicodeカテゴリ:小文字 |
\p{IsHiragana} | Unicodeカテゴリ:ひらがな |
\p{IsKatakana} | Unicodeカテゴリ:カタカナ |
■ バックリファレンス(後方参照)
| 記号 | 意味 |
\1 | 1番目のキャプチャグループと同じ文字列 |
\2 | 2番目のキャプチャグループと同じ文字列 |
\k<name> | 名前付きキャプチャの参照 |
■ 名前付きキャプチャ
| 記号 | 意味 |
(?<name>...) | 名前付きキャプチャグループ |
■ 条件分岐(高度)
| 記号 | 意味 |
(?(条件) 真パターン | 偽パターン) | 条件による分岐 |
■ コメント・オプション
| 記号 | 意味 |
(?# コメント) | 正規表現内のコメント |
(?i) | 大文字小文字を無視(インラインオプション) |
(?m) | 複数行モード(^ と $ が行単位で動作) |
(?s) | . が改行にもマッチ |
(?x) | 空白無視(可読性向上) |
■ アトミックグループ(バックトラック禁止)
| 記号 | 意味 |
(?>...) | バックトラックしない高速マッチング |
■ キャプチャ抑制(高度)
| 記号 | 意味 |
(?>...) | アトミックグループ(上記と同じ) |
(?n) | デフォルトでキャプチャしないモード |
■ バランスグループ(超高度)
入れ子構造(括弧の対応など)を扱える .NET 独自の強力機能です。
| 記号 | 意味 |
(?<open>\() | 開き括弧をスタックに積む |
(?<close-open>\)) | 閉じ括弧でスタックを消費 |
よく使われる正規表現パターン集
■ 数字・文字列関連
| 用途 | パターン |
| 数字のみ | ^\d+$ |
| 英字のみ | ^[A-Za-z]+$ |
| 英数字 | ^[A-Za-z0-9]+$ |
| 空白を含まない文字列 | ^\S+$ |
| 任意の文字列(行全体) | ^.*$ |
■ メールアドレス
| 用途 | パターン |
| 一般的なメール形式 | ^[\w\.-]+@[\w\.-]+\.\w+$ |
■ URL
| 用途 | パターン |
| http/https URL | ^https?://[^\s]+$ |
■ 日付
| 用途 | パターン |
| YYYY-MM-DD | ^\d{4}-\d{2}-\d{2}$ |
| YYYY/MM/DD | ^\d{4}/\d{2}/\d{2}$ |
■ 電話番号(日本)
| 用途 | パターン |
| 一般的な日本の電話番号 | ^\d{2,4}-\d{2,4}-\d{3,4}$ |
■ IPアドレス
| 用途 | パターン |
| IPv4 | ^(\d{1,3}\.){3}\d{1,3}$ |
■ ファイルパス
| 用途 | パターン |
| Windowsパス | ^[A-Za-z]:\\.+ |
| UNCパス | ^\\\
\[^\\]
+\
\[^\\]
+ |
■ 特定文字の含有チェック
| 用途 | パターン |
| 特定の単語を含む | word |
| 複数の単語のいずれか | (apple|banana|orange) |
■ 前後の空白除去(トリム)
用途別 正規表現パターン(追加カテゴリ)
■ ログ解析でよく使うパターン
| 用途 | パターン |
| 日時(例:2024-01-31 12:34:56) | \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} |
| IPアドレス抽出 | (\d{1,3}\.){3}\d{1,3} |
| ログレベル(INFO/ERROR/WARN) | (INFO|ERROR|WARN) |
| HTTPステータスコード | \b[1-5]\d{2}\b |
■ ファイル名・拡張子の抽出
| 用途 | パターン |
| 任意の拡張子を持つファイル名 | .+\.[A-Za-z0-9]+$ |
| 特定の拡張子(例:.log) | .+\.log$ |
| ファイル名部分のみ | ([^\\\/]+)$ |
■ CSV / TSV の解析
| 用途 | パターン |
| カンマ区切りの1フィールド | [^,]+ |
| タブ区切りの1フィールド | [^\t]+ |
| ダブルクォートで囲まれたフィールド | "([^"]*)" |
■ パス解析(Windows / Linux)
| 用途 | パターン |
| Windowsパス(C:\xxx) | ^[A-Za-z]:\\(?:[^\\]
+\\)*[^\\]
+$ |
| UNCパス(\\server\share) | ^\\\
\[^\\]
+\
\[^\\]
+ |
| Linuxパス(/usr/bin) | ^/[^ ]+ |
■ 特定形式の抽出
| 用途 | パターン |
| UUID | [0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12} |
| 16進数 | ^[0-9A-Fa-f]+$ |
| 金額(数値 + 任意のカンマ) | ^\d{1,3}(,\d{3})*$ |
■ テキスト処理でよく使うパターン
| 用途 | パターン |
| 前後の空白除去 | ^\s+|\s+$ |
| 連続スペースを1つに | \s{2,} |
| HTMLタグ除去 | <[^>]+> |