Nintendo MessageStudio ヘルプ

検索で利用可能な正規表現

正規表現とは?

正規表現(Regular Expression)とは、テキストの検索やパターンマッチングを行うときに 柔軟性や厳密性を持たせるために利用する仕組みです。 これによって、素早く特定の文字列を絞り込んだり、検索漏れをなくしたりすることが出来ます。

たとえば、「メールアドレス」が入力されているテキストを検索したいとします。 ご存知のように、メールアドレスは利用者ごとに異なる文字列となるため、そのまま検索することはできません。 しかし、メールアドレスは「ユーザー名@ホスト名」のようになっている場合がほとんどです。 このような、検索に引っ掛けるためのルールを記述することで特定のパターンの文字列を検索することが可能です。

正規表現を利用するときには、検索オプションのところへチェックを入れてください。



正規表現は、Message Studio独自の仕組みではなく、コンピューターシステム全般的に利用される技術です。 ここでは、テキストの検索のためによく利用されるもののみを掲載します。 Message Studioで利用可能な正規表現について詳しくは以下のウェブサイトを参照してください。

ttp://msdn.microsoft.com/ja-jp/library/az24scfc(VS.80).aspx

正規表現パターンの記述方法

文字列エスケープ

正規表現を利用してパターンを表現する場合、特定の記号には特別な意味を持つものがあります(詳しくは後述します)。 アルファベット以外の文字の直前にバックスラッシュ(日本語環境の場合は円記号が該当)を入力することで、 特殊な意味を打ち消し、文字本来のものにマッチします。 たとえば、以下の正規表現はアスタリスク記号(*)1文字にマッチします(本来、アスタリスクは特殊な意味を持ちます)。

\*

バックスラッシュがアルファベットの直前に入力された場合、 入力された文字に応じて特殊な文字と一致します。

\tバックスラッシュの直後にtがついた場合、タブ文字と一致します。
\rバックスラッシュの直後にrがついた場合、キャリッジリータン文字と一致します。 通常、\r\nと入力して、1つ分の改行を検索します。
\nバックスラッシュ文字の直後にnがついた場合、ラインフィード文字と一致します。 通常、\r\nと入力して、1つ分の改行を検索します。
\u0020バックスラッシュの直後にuが入り、その直後に16進数が4桁続いた場合、Unicode文字と一致します。 コンピューターにIME(Input Method Editor)がインストールされていない状況で検索だけを行う必要がある場合に便利です。 たとえば、日本のPCでハングル文字を検索する場合に有効に利用できます。

Unicode文字コード表は、以下のUnicodeのサイトを参照してください。
ttp://www.unicode.org/charts/
\\バックスラッシュが二個連続できた場合、それはバックスラッシュ一つ分と一致します。

文字クラス

文字クラスは、指定されたグループの中のいずれかの文字にマッチする検索をするために利用します。 たとえば、電話番号を検索する場合特定の文字ではなく、「数字一文字」という幅広い意味を持たせた パターンで検索する必要があります。このような検索は文字クラスを利用することで書くことが出来ます。

[characters]角括弧で複数の文字を囲むと、入力された文字の中のいずれかにマッチします。 たとえば、[abc]と入力すれば、aまたはbまたはcという意味になります。 連続された範囲はハイフン(-)で入力することが出来ます。 たとえば、[0-9]と入力すれば数字1文字になりますし、[0-9A-F]とすれば、16進数で利用可能な数字1文字になります。
[^characters]角括弧で囲まれていて、その先頭がサーカムフレックス記号(^)になっている場合、 括弧内に入力された文字以外のものとマッチします。 たとえば[^abc]であればaでなく、かつbでもなく、かつcでもないという意味になります。
.ピリオド文字(.)を入力すると、改行を除く任意の一文字とマッチします。 ただし、角括弧中で利用されると、任意の一文字ではなく、ピリオド文字自体として扱われることに注意してください。
\d省略形です。数字1文字と一致します。[0-9]と同等の動作です。
\sスペースやタブなど、空白文字と一致します。

繰り返し(数量指定子)

検索するときに、特定の文字を何度も繰り返している箇所の検索を行いたい場合があります。 たとえば、「1文字以上連続する数字」などを検索したい場合などです。 この場合、以下に挙げる量指定子を繰り返すものの直後におくことで行うことが出来ます。

*アスタリスク(*)を指定すると、0回以上の繰り返しを示します。
+プラス記号(+)は、1回以上の繰り返しを示します。
?疑問符(?)は、直前の文字が存在するか、存在しないかを表します。 0回または1回を表します。
{n}波括弧で囲われて、中に数字が入っている場合は、ちょうどその数字の回数だけ繰り返します。

この検索手法は、繰り返す直前の文字が文字クラス(上述)であると効果的です。 たとえば、「4桁の数字」を検索する場合は以下のように入力できます。

[0-9]{4}

境界一致(アトミックゼロ幅アサーション)

以下に示すメタ文字は、特定の文字と一致するのではなく、「場所」に対して有効です。 これを利用することで、より厳密性を増した検索を行うことが出来ます。 たとえば、land(土地)を普通に検索した場合、通常ですとisland(島)も引っかかります(islandは、単語の中にlandを含んでいるため)。 この機能を利用すると、厳密にlandという単語のみを取り出し、islandを検索結果から除外できます。

^サーカムフレックス(^)がついた場合、そこが行頭であるものを検索できます。 サーカムフレックスが角括弧の先頭についた場合意味が変わります(上述)ので、ご注意ください。
$ドル記号($)がついた場合、そこが行末であるものを検索できます。
\bバックスラッシュの次にbがついた場合、そこが単語の間であることを示します。 上述の例のようにlandを検索する場合、\bland\bと入力すればよいことになります。