基本

[VB.NET] 正規表現の使い方と種類

今回は、VB.NETでの正規表現の使い方と種類についてご紹介します。

正規表現とは

正規表現(Regular Expression)は、文字列中の特定パターンを検索・抽出・置換するための手法です。

VB.NETでは、System.Text.RegularExpressions 名前空間の Regex クラスを利用することで、正規表現を使った多彩な文字列操作が可能です。

例えば、特定の形式の文字列が含まれているかどうかを確認したり、複数の一致箇所をまとめて抽出したりする際に役立ちます。

正規表現パターンの種類

正規表現は、さまざまな特殊記号を組み合わせてパターンを定義します。

ここでは、代表的な要素をいくつかご紹介します。

文字クラス

角括弧 [ ] 内に指定した文字のどれか1文字にマッチします。

例えば、[A-Za-z]+ は英字が1文字以上連続する部分を対象とします。

量指定子

直前の要素が出現する回数を表します。

  • *:0回以上
  • +:1回以上
  • ?:0回または1回
  • {n,m}:n回からm回まで

例えば、\d{3,4} は3~4桁の数字にマッチします。

アンカー

文字列や行の先頭・末尾を表す特殊文字です。

  • ^:行の先頭
  • $:行の末尾

例えば、^\d{3}$ は行全体が3桁の数字だけの場合にマッチします。

グループ化とキャプチャ

丸括弧 ( ) を使って部分パターンをグループ化し、抽出結果をさらに細かく扱うことができます。

例えば、(\d{3})-(\d{4}) はハイフンで区切られた3桁と4桁の数字を別々にキャプチャできます。

オルタネーション

パイプ記号 | を使って複数のパターンのいずれかにマッチさせることができます。

例えば、cat|dog は “cat” または “dog” にマッチします。

VB.NETでの主なメソッドと基本的な使い方

正規表現を使った文字列操作を行う、Regexクラスの主要なメソッドとしては、MatchMatchesReplaceSplitなどがあります。

ここでは、それぞれの使い方を簡単にご紹介します。

Regex.Matchの使用例

Regex.Matchは、指定した文字列の中から最初にマッチした部分を取得するためのメソッドです。

以下の例では、文字列から数字のみを抜き出します。

実行結果

抽出した数値: 123

Regex.Matchesの使用例

Regex.Matchesは、指定した文字列の中からパターンにマッチするすべての部分を抽出します。

例えば、複数の電話番号が含まれた文字列から番号をすべて取得したい場合に便利です。

実行結果

見つかった電話番号: 03-1234-5678
見つかった電話番号: 045-9876-5432

Regex.Replaceの使用例

Regex.Replaceは、文字列中の一致部分を別の文字列に置換します。

不要な情報をマスクしたり、数字をまとめて置き換えたりする場合に活用できます。

実行結果

置換結果: Hello 数字, welcome 数字

Regex.Splitの使用例

Regex.Splitは、指定したパターンで文字列を分割し、配列として取得します。

複数種類の区切り文字を同時に扱いたいときなどに便利です。

実行結果

分割要素: apple
分割要素: orange
分割要素: banana
分割要素: grape

具体的な応用例

VB.NETで正規表現を使うと、各種バリデーションやログ解析など、実用的なシーンで大いに活用できます。

メールアドレスの形式チェック

正規表現を使ってメールアドレスの形式を簡易的に検証できます。

実行結果

正しいメールアドレスです。

ログファイルからエラー箇所を抽出

ログファイルの内容から、特定のパターンにマッチする行を抜き出す例です。

実行結果

エラーメッセージ: ファイルが見つかりません

注意点

正規表現を利用する際は、以下の点に留意するとより安全かつ効率的に開発ができます。

  • パフォーマンス:複雑なパターンや大規模なテキストを扱う場合、処理に時間がかかることがあります。
  • 可読性:長いパターンはメンテナンスが難しくなるため、必要に応じてコメントや分割を行うことが重要です。
  • エスケープの扱い:VB.NETの文字列リテラル内では、バックスラッシュは特別な意味を持ちます。二重に記述するなど注意が必要です。
  • 入力検証:すべての妥当性を正規表現だけで保証するのは難しいため、補助的なロジックとの組み合わせが望ましいです。
  • 文化依存性:大文字・小文字の扱いなど、使用環境によって結果が変わる場合があります。オプションの設定を適切に行いましょう。

まとめ

VB.NETの正規表現は文字列処理を大幅に効率化できます。

Regex.MatchやReplaceなどのメソッドの使い方と、パターンの組み立て方を理解するとさまざまな場面で役立ちます。

パフォーマンスや可読性に配慮しながら、必要に応じて正規表現を使いこなすことがポイントです。