PowerShellでのテキスト処理で、もっと効率良く抽出・置換したいと思ったことはありませんか?
そんなときに威力を発揮するのが**正規表現(Regex)**です。
ログ解析、ファイル名整形、データ抽出、フォーマット変換など、
業務効率が劇的に変わる超重要スキルです。
本記事では、PowerShell × 正規表現の基本から実務で使えるテクニックまで徹底解説します。
✅ 正規表現の基本:PowerShellでの使い方
マッチ判定 -match
否定パターン
文字列からValue取得
$matches[1] にキャプチャした文字列が入る
✅ よく使う正規表現パターン
| 用途 | パターン | 例 |
| 数字 | \d+ | 1234 |
| 英字 | [A-Za-z]+ | UserName |
| メール | \w+@\w+\.\w+ | test@mail.com |
| 日付 | \d{4}/\d{2}/\d{2} | 2025/01/10 |
| 任意の文字列 | .*? | 全部 |
✅ 実践例:ログからIPアドレスだけ抽出
出力
✅ 置換:-replaceでデータ整形
電話番号のハイフン削除
メールのドメインを隠す
✅ ファイル名の一括リネーム
大量ファイルの命名変換で超便利
✅ キャプチャした値を使った置換
日付フォーマット変換(YYYY/MM/DD → YYYY-MM-DD)
✅ 否定・条件抽出の例
IP行だけ抽出
エラー行だけ取得
“Warning”を含まない行
✅ 欲しいパターンはGitHub Copilotじゃなく、正規表現辞書を使え!
以下のキーワードで検索すると精度高い例が見つかります👇
✅ まとめ
| 機能 | PowerShellでのコマンド |
| マッチ判定 | -match / -notmatch |
| 抽出 | $matches[] |
| 検索 | Select-String |
| 置換 | -replace |
| ファイル検索 | Get-ChildItem + Select-String |
正規表現を使いこなすと、
データ処理・ログ解析・自動化スクリプトが一気にプロレベルになります。
WinMergeは「ファイルの違いを見るだけのツール」ではありません。
正規表現とフィルタ機能を組み合わせることで、不要な差分を除外し、実質的な変更だけに集中できます。
この記事では、
初心者でもすぐに使える「正規表現の基本」と、
上級者向けの「フィルタファイルを使った高度な差分除外テクニック」までを詳しく解説します。
🔍 正規表現を使える主な場面
| 機能 | 対応 | 説明 |
| 検索・置換 | ✅ | 検索ダイアログで「正規表現を使用」にチェック |
| フィルタファイル(.flt) | ✅ | 比較時に除外ルールを定義できる |
| 差分検出ロジック | ⚙ 一部 | 特定パターンの行を無視可能 |
🧩 よく使う正規表現例
| 目的 | 正規表現例 | 意味 |
| 空行を無視 | ^\s*$ | 空白や改行のみの行を除外 |
| 日付を無視 | \d{4}-\d{2}-\d{2} | 例:2025-10-09 のような日付を除外 |
| コメント行を無視 | ^#.* / ^\s*//.* | コメント始まりの行をスキップ |
| 数値部分を無視 | \d+ | 動的なIDやカウンタ値を除外 |
⚙️ WinMergeの検索で正規表現を使う方法
-
メニューから 「編集」→「検索…」 を開く

-
検索キーワードに正規表現を入力(例:^ERROR.*)
-
下部の「正規表現を使用」にチェック

-
「次を検索」で対象行を強調表示
🔍 よく使う検索パターン集
| パターン | 意味 |
| ^ERROR.* | ERRORで始まる行を検索 |
| TODO|FIXME | TODO または FIXME を検索 |
| [A-Z]{3} | 3文字以上の大文字英単語 |
| \bhttps?://[^\s]+ | URLを抽出 |
🧱 フィルタファイルとは?
WinMergeで比較時に「特定の行を無視」するための設定ファイルです。
拡張子は .flt。
コメントや空白行、日付などのノイズを除外して、本質的な差分を見やすくできます。
🧰 フィルタファイルの作り方
① 新規作成
-
メモ帳などで新しいテキストファイルを作成
-
以下の内容を記述
| 項目 | 意味 |
| Enable=1 | フィルタ有効化 |
| IncludeFileMask | 対象ファイル(例:*.java) |
| ExcludeRegExp | 除外したい正規表現(カンマ区切りOK) |
-
名前をつけて保存
例:
② WinMergeに読み込ませる
-
WinMergeを起動
-
メニューで
[編集] → [フィルタを選択] をクリック
-
「ファイル比較フィルタ」ダイアログで
[参照…] → 作成した .flt ファイルを選択
-
「OK」を押すと有効化完了!
これで比較時にフィルタが自動的に適用されます。
③ 効果を確認する例
比較ファイルA
比較ファイルB
通常比較では「日付が違う」と表示されますが、
次のようなフィルタを設定すれば「差分なし」になります。
→ コメントや日付行を完全に無視できるようになります!
🎯 フィルタの応用テクニック
| シーン | 推奨設定例 |
| コードレビュー | コメント・空行を除外 (^//.*, ^\s*$) |
| ログ比較 | タイムスタンプを除外 (\d{2}:\d{2}:\d{2}) |
| 設定ファイル(JSON) | 動的値を除外 ("updated_at":\s*".*") |
| HTML比較 | script/styleタグ内を除外 () |
💡 複数の .flt ファイルを作り、用途に応じて切り替えるのがおすすめです。
🧠 まとめ
| ポイント | 内容 |
| 正規表現で柔軟に検索 | 複雑な条件でも効率的にマッチング |
| フィルタファイルで差分を制御 | コメント・日付などノイズを無視 |
| 設定は簡単 | メモ帳で作ってWinMergeに読み込むだけ |
| 比較効率UP | 実質的な変更に集中できる |
🏁 結論
WinMergeの「正規表現」と「フィルタファイル」を組み合わせると、
**「無駄な差分を消して、本質だけを見る」**比較環境が作れます。
コードレビュー、ログ検証、設定差分チェックなど、
日常の比較作業を大幅に効率化してくれる強力な武器です。
SQLの検索でよく使われる LIKE 句は便利ですが、複雑な条件指定には限界があります。
そこで強力な武器となるのが 正規表現(REGEXP)。
この記事では、基本的な使い方からよく使うパターン、さらに「SQLで利用できる正規表現の一覧」をまとめました。
1. REGEXPの基本構文
SQLでは REGEXP を用いて文字列検索を行います。
2. 使用できる正規表現の一覧(MySQL準拠)
SQLで使える代表的な正規表現を整理しました。
※DBエンジンにより若干差異あり(MySQL、PostgreSQL、Oracleなど)
| パターン | 意味 | 使用例 | | |
| ^ | 行頭にマッチ | ^A → Aで始まる | | |
| $ | 行末にマッチ | Z$ → Zで終わる | | |
| . | 任意の1文字 | c.t → cat, cot, cut | | |
| [...] | 文字クラス | [0-9] → 数字1文字 | | |
| [^...] | 否定の文字クラス | [^0-9] → 数字以外 | | |
| * | 0回以上の繰り返し | a* → \\" | a | aaa" |
| + | 1回以上の繰り返し | a+ → a, aa | | |
| ? | 0回または1回 | colou?r → color, colour | | |
| {n} | n回の繰り返し | [0-9]{4} → 4桁の数字 | | |
| {n,} | n回以上の繰り返し | [0-9]{2,} → 2桁以上の数字 | | |
| {n,m} | n〜m回の繰り返し | [A-Z]{2,5} → 2〜5文字の大文字 | | |
| | | OR条件 | cat|dog → cat または dog | | |
| () | グループ化 | (abc)+ → abc, abcabc | | |
| [:digit:] | 数字 | [[:digit:]] → 0〜9 | | |
| [:alpha:] | 英字 | [[:alpha:]] → A〜Z, a〜z | | |
| [:alnum:] | 英数字 | [[:alnum:]] → 英数字 | | |
| [:space:] | 空白文字 | [[:space:]] → 空白, 改行, タブ | | |
| [:upper:] | 大文字 | [[:upper:]] → 大文字 | | |
| [:lower:] | 小文字 | [[:lower:]] → 小文字 | | |
3. よく使う実践パターン
(1) 先頭・末尾の一致
(2) 日付フォーマット判定
(3) メールアドレス判定
(4) 商品コードの書式検証
(5) 拡張子フィルタ
4. REGEXPのメリットと注意点
メリット
-
複雑な条件をシンプルに表現できる
-
SQLの可読性が向上
-
データ品質チェックに有効
注意点
SQLでのREGEXPサポート比較(DBMSごと)
| DBMS | REGEXPサポート | 演算子/関数例 | 備考 |
| MySQL | ◎ | REGEXP, REGEXP_REPLACE | 8.0以降はICUベース |
| PostgreSQL | ◎ | ~, ~*, !~, !~* | 高度な正規表現OK |
| Oracle | ◎ | REGEXP_LIKE, REGEXP_SUBSTR | POSIX互換 |
| SQL Server | △ | (CLR関数経由) | ネイティブ未対応 |
| SQLite | △ | REGEXP(要自作関数) | デフォルト非対応 |
| BigQuery | ◎ | REGEXP_CONTAINS など | クラウドSQL |
| Snowflake | ◎ | RLIKE, REGEXP | ほぼMySQL互換 |
まとめ
REGEXPを使えばSQLの検索が格段に柔軟になります。
一覧表を参考に、ログ解析やメール判定、コード検証などに応用してみてください。
「LIKEでは表現できない…」と思ったら、REGEXPの出番です!
テキストファイルを処理して「特定の行だけ抜き出したい」という場面は、ログ解析やデータ処理を行う際によくあります。PowerShellを使えば、シンプルなコマンドで効率的に抽出可能です。本記事では、PowerShellによる代表的な方法を解説します。
基本的な考え方
PowerShellでは、Get-Content コマンドレットでテキストファイルを1行ずつ取得できます。そこから条件を指定して、欲しい行をフィルタリングすれば目的の行を抽出できます。
方法1:行番号で抽出する
特定の行番号を指定して抽出するには配列インデックスを利用します。PowerShellは0から数えるので注意しましょう。
複数行をまとめて取得することも可能です。
方法2:条件で抽出する(文字列検索)
キーワードを含む行だけを抽出するには Select-String を使います。
この場合、ヒットした行番号と内容が出力されます。内容だけ欲しい場合は以下のように書けます。
方法3:正規表現で抽出する
複雑な条件にマッチさせたい場合は正規表現を活用できます。
方法4:範囲指定で抽出する
特定の行範囲を取り出したい場合は Select-Object を利用します。
まとめ
-
行番号で取得 → 配列インデックス
-
キーワードで取得 → Select-String
-
複雑条件 → 正規表現
-
範囲指定 → Select-Object
PowerShellを使えば、テキストファイルの解析や必要な行だけの抽出を簡単に自動化できます。ログファイル処理やデータ前処理など、日々の作業効率化にぜひ活用してみてください。
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。