「メールアドレスが正しい形式か確認したい」「郵便番号だけを抽出したい」「決まった形式のデータだけを探したい」といった場面は、業務でもプログラミングでもよくあります。このようなときに役立つのが正規表現(Regular Expression)です。一見すると記号ばかりで難しそうに見えますが、基本的なルールを覚えるだけでも、データ検索や入力チェックの効率は大きく向上します。
この記事では、正規表現の基本から代表的なパターン、実務で役立つ活用例、さらにExcel VBAで利用する方法まで分かりやすく解説します。
正規表現とは?
正規表現とは、文字列のパターンを表現するための記述方法です。
例えば、「数字3桁の後にハイフンがあり、その後に数字4桁が続く」というルールを表現すれば、日本の郵便番号だけを検索できます。つまり、単純に「○○という文字を探す」のではなく、「○○というルールに一致する文字列を探す」ための仕組みです。そのため、入力チェックやデータ抽出、ログ解析、データクリーニングなど、さまざまな場面で利用されています。
正規表現が活躍する場面
正規表現は特別な技術ではなく、身近なシステムでも数多く利用されています。
例えば会員登録画面でメールアドレスの形式を確認したり、ECサイトで郵便番号の入力ミスを検出したりする仕組みも、その多くが正規表現を利用しています。また、プログラムだけではなく、テキストエディタやIDE、Linuxコマンド、Excel VBAなど、多くのツールで利用できる共通技術でもあります。
基本的な正規表現の記号
正規表現には数多くの記号がありますが、まずはよく使われるものだけ覚えれば十分です。
| 記号 | 意味 | 例 |
|---|---|---|
. | 任意の1文字 | a.c → abc、axc |
* | 0回以上繰り返す | ab*c |
+ | 1回以上繰り返す | ab+c |
? | 0回または1回 | colou?r |
\d | 数字1文字 | 5 |
\w | 英数字とアンダースコア | abc123 |
\s | 空白文字 | スペースやタブ |
^ | 文字列の先頭 | ^ABC |
$ | 文字列の末尾 | ABC$ |
[] | いずれか1文字 | [ABC] |
{n} | ちょうどn回 | \d{4} |
最初はすべて覚える必要はありません。実際の業務では、この表の記号だけでも十分に対応できるケースが多くあります。
よく使われる正規表現の例
メールアドレスを判定する
メールアドレスの形式を確認する場合は、次のような正規表現がよく利用されます。
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
例えば次のようなデータは一致します。
- sample@example.com
- user01@test.co.jp
一方で、
- sample@
- @example.com
- sample.example.com
などは一致しません。ただし、実際のメールアドレス仕様は非常に複雑です。この正規表現は一般的な入力チェックには十分ですが、すべての正しいメールアドレスを判定できるわけではありません。
郵便番号を確認する
日本の郵便番号であれば、次のような正規表現になります。
^\d{3}-\d{4}$
一致する例
123-4567
987-6543
一致しない例
1234567
12-34567
1234-567
入力ミスの検出に便利です。
電話番号を確認する
固定電話や携帯電話を簡易的に確認する場合は、次のような書き方が利用できます。
^\d{2,4}-\d{2,4}-\d{4}$
例えば
03-1234-5678
090-1234-5678
079-123-4567
などに一致します。
連続した空白を削除する
データを整理する際には、余分な空白を削除したいことがあります。
\s+
これを利用すると、スペースやタブが連続している箇所をまとめて検索できます。大量のCSVデータを整形するときにも役立ちます。
Excel VBAで正規表現を使う方法
Excelの標準関数では正規表現を利用できません。
しかし、VBAでは VBScript.RegExp を利用することで、正規表現による検索や判定が可能になります。例えば、メールアドレスをチェックするコードは次のようになります。
Sub ValidateEmails()
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
regex.IgnoreCase = True
Dim cell As Range
For Each cell In Range("A1:A100")
If Not regex.Test(cell.Value) Then
cell.Interior.Color = RGB(255, 0, 0)
End If
Next cell
End Sub
このマクロでは、A列に入力されたメールアドレスを順番に確認し、形式が正しくないセルを赤色で表示します。人が一件ずつ目視で確認する必要がなくなるため、顧客情報やアンケート結果など、大量データのチェック作業を効率化できます。
正規表現を使う際の注意点
正規表現は非常に便利ですが、万能ではありません。
例えば、メールアドレスのように仕様が複雑なデータでは、単純な正規表現だけでは完全な判定はできません。また、複雑な正規表現は可読性が低くなり、後から修正する人が理解しづらくなることもあります。そのため、実務では「必要以上に複雑な正規表現を書かない」ことも重要です。
入力チェックの目的なのか、データ抽出なのかを明確にし、必要十分なパターンを作成することが保守性の向上につながります。
まとめ
正規表現は、文字列を「文字」ではなく「ルール」で扱える便利な仕組みです。
メールアドレスや郵便番号の入力チェックだけでなく、ログ解析やCSVデータの整理、ファイル名の検索など、さまざまな場面で活用されています。最初は記号が多く難しく感じるかもしれませんが、実際によく使うパターンは限られています。まずはメールアドレスや郵便番号のような身近な例から試してみると理解しやすいでしょう。
Excel VBAでも正規表現を利用できるため、日々のデータチェックを自動化したい人にも役立つ知識です。正規表現を身に付ければ、データ処理の効率と正確性を大きく向上させることができます。


コメント