Javaで文字列の整形・クリーニングを行う際、正規表現(regex)を使って不要な文字をまとめて削除・置換するケースは非常に多いです。
本記事では、String#replaceAll() を中心に、よく使うパターン別にサンプルコードをまとめて紹介します。
■ 正規表現で削除・置換する基本構文
-
削除したいときは空文字
""を指定 -
Java の
replaceAll()は正規表現で動作する(replace()は文字列完全一致)
■ 数字以外を全部削除する
ユーザー入力チェックなどで定番のパターン。
[^0-9] → 数字以外を意味する否定クラス。
■ 英数字以外を削除する
記号や日本語をすべて除去したい場合に便利。
■ 日本語以外を削除する(全角ひらがな・カタカナ・漢字)
■ 空白(スペース)をまとめて削除する
-
半角スペース
-
全角スペース
-
タブ
全部まとめて消したい場合:
1つ以上の空白・改行をすべて消す。
■ 改行だけ削除したい
■ 特定記号だけ削除したい(例:ハイフン・カンマなど)
複数の記号をまとめて削除できる。
■ 複数パターンを一括置換(例:() と [] を削除)
正規表現では ( ) [ ] はエスケープが必要。
■ 文字の繰り返しを1つにまとめる(連続スペースを1つへ)
2つ以上の空白 → 1スペースに正規化
■ 電話番号を正規化(ハイフン削除など)
■ メールアドレスの不要文字を除外(制限付き)
■ 全角→半角/半角→全角変換も合わせて使う
正規表現とは別だが、入力クリーニングで頻繁に使うので補足。
全角 → 半角
半角 → 全角(ひらがな・アルファベットなど)
■ replaceAll() を使う際の注意点
● メタ文字はエスケープが必要
( ) [ ] { } . * + ? | \
これらは正規表現の特殊文字。
● 速度が必要な場合は Pattern を使う
大量の文字列を繰り返し処理する場合は、正規表現を事前コンパイルする。
■ よく使う削除・置換パターンまとめ(チートシート)
| 目的 | 正規表現 | 例 |
|---|---|---|
| 数字以外削除 | [^0-9] | abc123→123 |
| 英数字以外削除 | [^A-Za-z0-9] | A1$#→A1 |
| 空白削除 | \\s+ | a b→ab |
| 改行削除 | `\r\n | \r |
| 記号削除 | [!-/:-@[-{-~]` | 記号全削除 |
| 連続空白を1つに | \\s{2,} | a b→"a b" |
| ()[]削除 | [\\(\\)\\[\\]] | A(B)[C]→"ABC" |
■ まとめ
Javaの正規表現は、ユーザー入力の整形やデータクレンジングに非常に強力です。
特に replaceAll() を使うことで、不要な文字の削除・置換を一括で処理できます。
-
数字だけ取り出す
-
記号を除去
-
連続スペースを1つに整形
-
記号類の一括置換
など、実務でも頻繁に出てくる処理をシンプルに書けるので、ぜひ活用してください。
