メタ文字の使い方、メタ文字とその名称、読み方一覧


VBAで正規表現 02回

メタ文字を使ってみよう

ここではメタ文字の使い方について、それぞれの具体的な例を挙げて使用例を見ていきましょう。
それぞれの正規表現のメタ文字には特定の名前があります。
これからメタ文字を紹介していくにあたって名前を知らないと困るので、以下にその英語表記と日本語表記を表紹介します

メタ文字とその名称、読み方一覧

メタ文字の名称
 メタ文字と英名と日本名

メタ文字 英語表記 日本語表記
^ Caret キャレット、ハット
$ Dollar ドル記号
Question Mark クエスチョンマーク、疑問符
* Asterisk アスタリスク
+ Plus プラス記号
. Period or Dot ピリオドまたはドット
| Pipe or Vertical Bar パイプまたは縦棒
{} Braces or Curly Brackets 波括弧、ブレース
\ Backslash バックスラッシュ
[] Square Brackets 角括弧
() Parentheses 丸括弧

^ キャレット

「^」キャレット は、文字列の先頭にのみマッチします。
正規表現で文字列の先頭は、「文頭」や「行頭」を意味します。
このように位置を限定するメタ文字はアンカー(位置指定子)と呼ばれます。
「$」ドル記号は「^」の逆で、「文末」や「行末」を意味するアンカー(位置指定子)です。

例えば、具体的にレストランや食堂のメニューから、最初の文字列がチキンで始まるメニューを探したいときは、
^チキン.*
とします。すると、チキンから始まる文字列、
チキンかつ、チキン南蛮、チキンカレー
チキンサラダ、チキンラーメン、チキンフライ、チキンライス
などが該当します。
この時に、一緒に使っている、「.」ドットは、「/n」改行以外の任意の文字にマッチします。「*」アスタリスクは、ゼロ個以上の直前の文字にマッチします。
つまり、「.*」 は任意の文字が0回以上続くことを示します。
ただし、"フライドチキン"や"スパイシーチキン"など、「チキン」が先頭に来ないメニュー名は、この正規表現には一致しないので該当しません。

NAMAE-1

$ ドル記号

「$」ドル記号は「^」キャレットの逆で、「文末」や「行末」を意味するアンカー(位置指定子)です。
「^」キャレット は、文字列の先頭を表しましたが、「$」ドル記号は文末、または行末を意味します。

例えば、最後の文字列がチキン丼で終わるメニューを探したいときは、
.*チキン丼$
とすることで、前述したように、.* は任意の文字列を表し(. は任意の一文字を、* は直前の要素が0回以上繰り返されることを意味します)ますから、 最後の文字列がチキン丼で終わるメニューが該当します。
フライドチキン丼、スパイシーチキン丼
照り焼きチキン丼、から揚げチキン丼、照りマヨチキン丼
などが該当します。

NAMAE-2

パターンの作り方

正規表現によるパターンは、「通常の文字(リテラル)」と「メタ文字」を組み合わせて記述します。
メタ文字に対して通常の文字列のことをリテラルと呼び区別します。
以下の表はメタ文字のリフェランスです。


NAMAE-3

さて、^ キャレット、$ ドル記号、「.*」 ドットとアスタリスクの組み合わせから、パターンのルールはなんとなく理解できたかと思います。
そうは言ってもいざ自分がしたいことをどのようにパターン化したらいいかというと迷ってしまいます。どうしたらいいのか途方に暮れてしまう方も多いでしょう。
一番初めの準備をすることです。
それは困っていることの洗い出しです。

今困っていること、たとえ複数あっても、どれか1つに集中してみます。
支店からのデータの集計で表記ゆれが多くて困っているとしましょう。
㈱ ABC商店 ( 株 ) BBC商店 (株) CBA商店 (株) ACB商店
記号の㈱もあれば、半角や全角のカッコで挟まれたり、さらにカッコの内側に半角スペースがある株もあります。


こまった表記ゆれの例

これをすっきりと統一するために、パターンを考えます。右側は統一したい半角で囲まれた株です。
いくつかのグループに分けて考える必要があります。ひとつ目は全角のカッコで囲まれた株です。二つ目は半角のカッコで囲まれた株です。そして3つ目が記号の株というように分けてみます。
そしてカッコの中にはスペースがある場合もあるということを考慮します。

任意の空白文字は\sで表します。 それをひとつの集合ととらえて[\s]と表記。また*アスタリスクで、0個以上であるという限定をつけます。外側には全角(です。
グループはOR条件を表す|パイプで区切ります。


正規表現パターンの作り方-1

同様に、半角カッコで挟まれた株も考えましょう。こちらは全角カッコを半角に取り替えるだけですね。
ただし半角カッコを文字そのものとして使う場合には、\ バックスラッシュをつけてやる必要があります。
最後は記号の㈱という具合に、3つのグループに分かれました。それをつなげて1つのパターンとします。


正規表現パターンの作り方-2

一見大変そうに見える正規表現のパターン化ですが、グループに分けて、どのような共通点があるのかを考えていくと、メタ文字も使いやすいのではないでしょうか。

こちらもおすすめ