正規表現のパターン文字列の基本的な使い方をまとめました。
「*」は、直前の文字が0回以上繰り返された文字列にマッチします。このため、直前の文字が存在しない場合でもマッチします。
*は最長一致数量子、および最短一致数量子、強欲な数量子として使うことができます。パターンを「x*」とした場合は、xが0回以上出現した場合にマッチします。
メタ文字の「?」は、直前の文字が0回、または1回出現するとマッチします。
次は、exec()メソッドを利用して検索を行い、パターンマッチした文字列を書き出す例です。
繰り返しの回数を指定するには{ }を使います。文字xがn回繰り返された場合にマッチさせるには、次のように記述します。
文字xがn回以上繰り返された場合にマッチさせるには、次のように記述します。
x{n,}は直前の文字である"X"がn回以上現れるものにマッチします。
文字xがn回からm回の範囲内で繰り返された場合にマッチさせるには、次のように記述します。
これまで見てきたメタ文字の「*」、「+」、「?」や繰り返しの回数を指定する{n}、{n,m}は、直前の1文字の繰り返しを指定しますが、複数の文字を繰り返しの対象にしたい場合は( )を使って文字をグループ化します。なお、()で文字列を指定した場合は、(サブマッチパターン)となり、サブマッチ文字列として扱われます。
文字列の「Java」が1回以上繰り返された場合にマッチさせるには、次のように記述します。
exec()メソッドは、パターン文字列がサブマッチ文字列を含んでいる場合は、サブマッチ文字列の結果も返してきます。
本編でもお話ししましたが、パターン文字列にサブマッチ文字列が含まれる場合は、exec()メソッドは、次のように配列で結果を返してきます。
このため、マッチした文字列だけを取り出したい場合は、「結果を格納した変数名[0]」のようにインデックスで0を指定して、配列の先頭の要素だけを取り出すようにします。
パターンマッチの対象となる文字列を複数指定し、どれか1つの文字列が出現した場合にマッチさせるには、次のように「|」(パイプライン)を使います。
「co.jp」または「com」のいずれかにマッチさせるには、次のように記述します。
「xxxx.co.jp」と「xxxx.com」のいずれかにマッチさせたい場合は、次のように記述することができます。
複数の候補を設定する場合、量指定子の「+」や「*」を付けて繰り返し出現するパターンを指定することができます。
( )を使うとサブマッチ文字列になりますので、マッチした文字列だけを取り出したい場合は、「結果を格納した変数名[0]」のようにインデックスで0を指定しましょう。
なお、「*」を使った場合は、繰り返し回数が0でもマッチするので注意が必要です。
候補として設定する文字列には、メタ文字を組み合わせることができます。次のパターンは、特定のメールアドレスにマッチします。
上記のパターンは、次のいずれかの場合にマッチします。
パターンを定義する際に[abc]のように[]を付けると、[]内のいずれかの1文字とマッチするようになります。これを文字クラスと呼びます。文字クラスでは│を記述する必要がありません。
「/100[2345]/」は「/100(2|3|4|5)/」と同じ効果があります。
文字クラスを使用する場合、メタ文字の「-」を使うと、文字のaからzや数字の0から9のように、連続した文字を指定することができます。
[0123456789]の場合は、次のように記述することができます。
アルファベットの[hijklmn]の場合は、次のように記述することができます。
/[AE-NXYZ]/と記述した場合は、/[AEFGHIJKLMNXYZ]/と記載したことになります。
次のように複数の範囲を指定することが可能です。この場合は、0から5、aからd、AからDのいずれかの範囲の文字が出現した場合にマッチします。
文字クラスでは、メタ文字の「^」を先頭に記述することで、列挙した文字以外のすべての文字にマッチさせることも可能です。
次のように記述した場合は、a、b、c以外のすべての文字にマッチします。
使用頻度が高い文字クラスは、短縮形が用意されています。例えば、「\d」と記述した場合は[0-9]と同じ意味になります。
定義済みの文字 | 文字 | 該当する文字クラス | |
---|---|---|---|
\d | 数字 | [0-9] | |
\w | 文字 | [a-zA-Z0-9_] | |
\s | 空白文字 | [ \t\n\f\r]* | |
\D | 数字以外 | [^\d] | |
\W | 文字以外 | [^\w] | |
\S | 空白以外 | [^\s] | |
JavaScript Web開発パーフェクトマスター
金城俊哉著
秀和システム 3,672円
JavaScriptは、Webアプリ開発の定番言語です。本書は、JavaScriptの初学者向けにWebアプリ開発に必要なノウハウを、ボトムアップ方式で基礎から応用までやさしく解説します。
若手プログラマーが講師となって、JavaScript未体験のエンジニアに手ほどきをするというペアプロ形式で説明していくので、プログラミングスクールで1対1のレッスンを受けている感覚で読み進めていただけます。開発現場ですぐに役立つ技が満載です!
Copyright © ITmedia, Inc. All Rights Reserved.