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. キャプチャ(後で使える“変数”)

目的パターン説明
キャプチャ(...)グループ化して値を取る
後方参照\11番目のグループを再利用
名前付きキャプチャ(?<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 -match の基本構文

■ 基本構文

<文字列> -match <正規表現パターン>

左辺の文字列が右辺の正規表現にマッチするかを判定します。

■ 戻り値

■ マッチ成功時の自動変数 $matches

-match が成功すると、PowerShell は自動的に $matches に結果を格納します。

■ 基本例

"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カテゴリ:カタカナ

■ バックリファレンス(後方参照)

記号意味
\11番目のキャプチャグループと同じ文字列
\22番目のキャプチャグループと同じ文字列
\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)

■ 前後の空白除去(トリム)

用途パターン
前後の空白^\s+|\s+$

用途別 正規表現パターン(追加カテゴリ)

■ ログ解析でよく使うパターン

用途パターン
日時(例: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タグ除去<[^>]+>