正規表現解説正規表現をExcelで使うためのRegular Expressions

正規表現をExcelで使うためのRegular Expressions
正規表現をExcelで使うためのRegular Expressions

VBAで正規表現 導入編

正規表現(Regular Expression)について1回

正規表現はどういうものですか?

普段 Excel を使っている人でも正規表現という言葉は馴染みがないかもしれません。
エクセルに備わった検索は、非常に強力ですが、それでも複雑で検索できない文字列や数値があったりします。 正規表現は、特定のパターンに一致する文字列を見つけるための便利なツールです。
たとえば、電話番号やメールアドレスなど、特定の形式に従った文字列を検索したい場合に便利です。
VBA(Visual Basic for Applications)のプログラムでは、VBScript.RegExpオブジェクトが正規表現を使用するために用意されています。(VBAは、ExcelやWordなどのMicrosoft Officeアプリケーションで使用されるプログラミング言語です。)

電話番号のリストのサンプルを抽出

  1. 具体的な例として、次のような電話番号のリストがあるとします。これらの電話番号を正規表現を使って検索する場合、どのようなパターンを設定したら良いでしょうか?

    正規表現をExcelで使うためのRegular Expressions、タイトル01
  2. 正規表現を使って検索するには、数値を表す、\d
    {2,3}直前の文字が何回繰り返すか?
    次に来るのは - 、`-` はハイフン(-)を表す。
    あとは、このパターンを応用します。
    \d{2,3}-\d{4}-\d{4}

    正規表現をExcelで使うためのRegular Expressions、タイトル02
  3. \d{2,3}-\d{4}-\d{4}
    このパターンが意味する文字列は、
    「2〜3桁の数字、ハイフン、4桁の数字、ハイフン、4桁の数字」という形式の文字列という意味になります。
    正規表現を使って、上記パターンで検索すると、一致する文字列を簡単に検索できます。

    正規表現をExcelで使うためのRegular Expressions、タイトル03

正規表現:数字のみをマッチする表現の仲間

  1. 正規表現:数字のみをマッチする表現
    ● 半角数字
    [0-9]
    ● 半角数字(エスケープシーケンス)
    \d
    ● 全角数字
    [0-9]
    ● 半角か全角のいずれか
    [0-90-9]

  2. 正規表現:n回以上m回以下の繰り返しにマッチする表現
    {n,m}

  3. このパターンを使ってExcelのシート上のデータが、合っているかどうか、記入ミスなどがないかを調べる場合、VBEでコードを記述する必要があります。
    それについては、詳しい解説はここでは省きますが、次のようなコードを利用して、判定してみましょう。

    Option Explicit
        Dim ws As Worksheet,
    Sub 固定電話testreg()
        Set ws = Worksheets(2)
        Dim regex As Object
        Set regex = CreateObject("VBScript.RegExp")
        regex.Pattern = "\d{2,3}-\d{4}-\d{4}"
        regex.Global = False
    
        Dim rng As Range
        Dim cell As Range
        Set rng = ws.Range("A2:A12") 
    
        For Each cell In rng
            If Not regex.Test(cell.Value) Then
                cell.Offset(0, 1).Value = "False"
            Else
                cell.Offset(0, 1).Value = "True"
            End If
        Next cell
    End Sub
    
  4. 正規表現をExcelで使うためのRegular Expressions、タイトル01

    regex.Pattern = "\d{2,3}-\d{4}-\d{4}"
    パターンに合っている場合は、True,合っていない場合はFalseと表示されます。

正規表現の学習は必要に応じて少しずつ

正規表現が便利そうなことは理解できても、日常的に高度なパターン検索置換をしなければならない状況にないと、使う必要性を感じないかもしれません。 私の場合は、自分が必要と迫られた時、必要な正規表現を考え、後でまた使えるようにメモを残しておきます。

こちらもおすすめ