# ファイル名の一括変換[正規表現] 使い方

## 起動方法

- メニュー「Ctrl+Keyコマンド」→「ファイル名の一括変換[正規表現] (&U)」
- またはキーボード **Ctrl+U**
- **事前に変換したいファイルをマーク（タグ）しておく必要があります**

---

## 画面構成

```
┌──────────────────────────────────────────────────┐
│ モード: ●正規表現  ○通常置換   □大文字小文字を区別しない      │
├──────────────────────────────────────────────────┤
│ 正規表現モード                                         │
│  検索パターン: [                    ]                  │
│  置換文字列:  [                    ]                  │
├──────────────────────────────────────────────────┤
│ 通常置換モード（最大3ペア）                                 │
│  置換前1: [          ]  置換後1: [          ]         │
│  置換前2: [          ]  置換後2: [          ]         │
│  置換前3: [          ]  置換後3: [          ]         │
├──────────────────────────────────────────────────┤
│ 変換履歴（プリセット）                                     │
│  名称: [                    ]  [保存]                │
│ ┌─────────────────────────────┐  [削除]  │
│ │ スペース除去                   │         │
│ │ 日付プレフィックス追加             │         │
│ │ 連番ゼロ埋め                   │         │
│ └─────────────────────────────┘         │
├───────────────┬──────────────────┤
│ 変換前          │ 変換後（テスト結果）      │
│  file001.jpg  │  001_file.jpg   │
│  file002.jpg  │  002_file.jpg   │
└───────────────┴──────────────────┘
              [テスト]  [実行]  [キャンセル]
```

---

## 操作手順

### 基本の流れ

1. ファイルリストで変換したいファイルを**マーク**する
2. **Ctrl+U** でダイアログを開く
3. **モードを選択**（正規表現 or 通常置換）
4. パターン・置換文字列を入力する
5. **[テスト]** で変換後プレビューを確認する
6. 問題なければ **[実行]** する

---

## 正規表現モード

### 入力項目

| 項目 | 内容 |
|---|---|
| 検索パターン | ECMAScript 正規表現で記述する |
| 置換文字列 | 置換後の文字列。グループ参照は `$1` `$2` を使う |
| 大文字小文字を区別しない | チェックすると `FILE` `file` `File` を同一視する |

### パターン記法（主なもの）

| 記号 | 意味 |
|---|---|
| `^` | 文字列の先頭 |
| `$` | 文字列の末尾 |
| `.` | 任意の1文字 |
| `*` | 直前の要素の0回以上の繰り返し |
| `+` | 直前の要素の1回以上の繰り返し |
| `?` | 直前の要素の0回または1回（最短一致にも使う） |
| `\d` | 数字（0〜9） |
| `\D` | 数字以外 |
| `\s` | 空白文字（スペース・タブ等） |
| `\w` | 英数字・アンダースコア |
| `[abc]` | a、b、c のいずれか1文字 |
| `[^abc]` | a、b、c 以外の1文字 |
| `(...)` | グループ化（`$1` `$2` で参照） |
| `(?:...)` | グループ化（参照なし） |

### よく使うパターン例

| やりたいこと | 検索パターン | 置換文字列 |
|---|---|---|
| 先頭に `IMG_` を付ける | `^` | `IMG_` |
| 末尾（拡張子前）に `_old` を追加 | `(\.[^.]+)$` | `_old$1` |
| 先頭の連番とアンダースコアを除去 | `^\d+_` | （空欄） |
| `file` を `photo` に全置換 | `file` | `photo` |
| スペースをアンダースコアに変換 | `\s+` | `_` |
| 括弧と中身をまとめて削除 | `\(.*?\)` | （空欄） |
| 全角スペースを除去 | `　` | （空欄） |
| 先頭と末尾のスペースを除去 | `^\s+\|\s+$` | （空欄） |

### グループ参照の使用例

ファイル名のパターン部分を入れ替える例:

- 検索パターン: `(.*?)_(\d+)(\.jpg)$`
- 置換文字列: `$2_$1$3`
- 結果: `photo_001.jpg` → `001_photo.jpg`

---

## 通常置換モード

正規表現を使わず、単純な文字列の置き換えを最大3ペア同時に行えます。

### 入力項目

| 項目 | 内容 |
|---|---|
| 置換前1〜3 | 置き換える対象の文字列 |
| 置換後1〜3 | 置き換え後の文字列（空欄にすると削除） |

ペアは上から順に適用されます。空欄のペアはスキップされます。

### 使用例

`-` を `_` に変換しつつ、`(1)` を `01` に変換する:

```
置換前1: -      置換後1: _
置換前2: (1)    置換後2: 01
置換前3: （空欄）
```

---

## プリセット機能

よく使うパターンを名前を付けて保存できます。保存先は `annsFM.ini` の `[RenameRegex]` セクションです。

### 操作

| 操作 | 内容 |
|---|---|
| **Alt+H** | プリセット一覧にフォーカスを移動する（アクセレレーターキー） |
| **名称を入力 → [保存]** | 現在のモード・パターンをプリセットとして保存する |
| **プリセットをクリック（または一覧にフォーカス中に↑↓キーで選択移動）** | 名称欄にプリセット名が表示される |
| **プリセットをダブルクリック（または一覧にフォーカス中にEnterキー）** | モード切り替えとパターン・置換文字列の入力欄に値をセットする |
| **[削除]** | 選択中のプリセットを削除する |
| **同名で保存** | 上書き確認メッセージが表示され、Yesで上書きされる |

### キーボードだけでの操作

マウスの「クリック」「ダブルクリック」はそれぞれキーボードで次のように代替できます。

1. **Alt+H** でプリセット一覧にフォーカスを移動する
2. **↑↓キー** でプリセットを選択する（クリックと同じ。名称欄にプリセット名が表示される）
3. **Enterキー** を押す（ダブルクリックと同じ。モードとパターン・置換文字列欄に値がセットされる）

※一覧にフォーカスがある状態でのEnterキーはダブルクリック相当の動作を行うため、ダイアログの既定ボタン（[実行]）は反応しません。

### 注意

- 名称が空欄の場合は保存できません
- 名称にタブ文字は使用できません

---

## テストと実行

### [テスト]

実際のリネームは行わず、変換後のファイル名を右側のリスト（変換後）に表示します。
**必ずテストで結果を確認してから実行してください。**

### [実行]

- 変換後ファイル名の重複がある場合はエラーになり実行されません
- 確認ダイアログが表示されます
- **元に戻す機能はありません**

---

## 注意事項

- 拡張子を含むファイル名全体が変換対象です（`photo.jpg` の `.jpg` も含む）
- 変換後に同名ファイルが生じる場合は実行できません
- 正規表現パターンが不正な場合はエラーメッセージが表示されます
- 実行後はファイルリストが自動的に更新されます
