単純置換とは
手軽屋の「テキスト一括置換」が採用しているのが「単純置換(リテラル置換)」。 入力した文字列を、書いたとおりに探して書いたとおりに置き換えます。. は本物のピリオド、* は本物のアスタリスク、(abc) は本物の括弧文字。何も特別な意味を持ちません。
技術的にはJavaScriptの String.prototype.replaceAll() に文字列を渡したのと同じ挙動です(MDN仕様)。
正規表現置換とは
VSCode・Sublime Text・サクラエディタ・秀丸の「正規表現(regex)置換」では、 特定の記号が「パターン記号」として特別な意味を持ちます。
.→ 任意の1文字(改行以外)*→ 直前の文字を0回以上繰り返す+→ 直前の文字を1回以上繰り返す?→ 直前の文字が0回または1回[abc]→ a、b、cのいずれか1文字[0-9]→ 半角数字のいずれか1文字^→ 行頭$→ 行末\d→ 半角数字 /\s→ 空白 /\n→ 改行(abc)→ グループ化、後で$1で参照
どちらをいつ使う?
| 用途 | 単純置換 | 正規表現置換 |
|---|---|---|
| 単語→単語の差し替え | ◎ 最速 | ○ 動くが冗長 |
| 表記ゆれ統一(10語) | ◎ 10セット並べる | △ 1パターンずつ |
| テンプレ差し込み | ◎ | ○ |
| 電話番号のハイフン除去 | ○ ハイフンを空に置換 | ◎ [-‐ー] で揺れも吸収 |
| 行頭の番号削除 | × 不可 | ◎ ^[0-9]+\.\s |
| 空行削除 | ○ 改行2連を1連に | ◎ ^\n |
| 日付フォーマット変換 | × 不可 | ◎ キャプチャグループ |
| HTML/XMLタグ削除 | × 困難 | ◎ <[^>]+> |
初心者がやりがちな事故 3選
- 正規表現置換で
.を本物のピリオドのつもりで書く:株式会社A.Bを株式会社X.Yに置換しようとして 「A.B」とパターンに書くと、「AaB」「A1B」「A_B」など何でも引っかかります。 ピリオドそのものをマッチさせたいときは\.とバックスラッシュで囲む。 *の意味を間違える:name*は「nameという文字列」ではなく「nam + eが0回以上」。 つまりnam、name、nameee全てがマッチ。 真意に近いのはname.*やname\S*。- グループ参照を忘れる:
(\d{4})-(\d{2})-(\d{2})で日付を捕まえた後、 置換側を$2/$3/$1と書くと「7/15/2026」になります。$1→$2をエディタによっては\1→\2と書くので、使うツールのヘルプ確認を。
単純置換の強みは「事故が起きにくい」
正規表現は強力ですが、書いた本人も意図しないマッチを引き起こします。 単純置換は「書いた通りにしか動かない」ぶん、結果が予想できて事故が起きにくい。 表記ゆれの統一、テンプレ差し込みなど「やることがはっきり決まっている」場面は単純置換の方が安全です。
併用パターン
実務では両方を使い分けるのが現実的。たとえば「HTMLタグを正規表現で剥がしたあと、 残った文字列の表記ゆれを単純置換で揃える」「日付を正規表現で書式変換した後、月名を単純置換で日本語化」など、 それぞれの得意分野を組み合わせます。
手軽屋には正規表現置換ツールはまだありませんが、テキストの前処理として テキスト整形、後処理として テキスト一括置換を組み合わせると、大抵の整形作業はカバーできます。