連載
正規表現における文字の指定方法を深める――「文字クラス」と「Unicodeプロパティエスケープ」:ECMAScriptで学ぶ正規表現(4)
正規表現の基本と、ECMAScript(JavaScript)における利用方法を紹介する連載。今回は、文字クラスによる文字の指定方法と、便利なUnicodeプロパティエスケープについて。
正規表現を使うポイントに、「検索するパターンをどのように指定するか?」ということがあります。ここで重要なのが、文字の種類に基づく文字クラスです。一般的な正規表現では大ざっぱな指定しかできませんでしたが、Unicodeプロパティエスケープを使うことで日本語でも緻密な指定が可能になりました。今回は、文字クラスについておさらいし、本命のUnicodeプロパティエスケープを紹介していきます。
文字クラス
文字クラスについては、第2回で代表的なメタ文字であると紹介しました。文字クラスを使うと、大ざっぱな指定で特定の文字種を表現できます。表1に、文字クラスの一覧を示します(第2回の表1を詳細にして再掲)。
メタ文字 | 機能 |
---|---|
. | あらゆる1文字とマッチする |
\d | 数字とマッチする |
\D | 数字以外とマッチする |
\w | 英数字とマッチする |
\W | 英数字以外とマッチする |
\s | ホワイトスペース文字とマッチする |
\S | ホワイトスペース文字以外とマッチする |
\t | 水平タブ文字(0x09、U+0009)とマッチする |
\v | 垂直タブ文字(0x0b、U+000B)とマッチする |
\r | 復帰文字(0x0d、U+000D)とマッチする |
\n | 改行文字(0x0a、U+000A)とマッチする |
\f | 改ページ文字(0x0c、U+000C)とマッチする |
[\b] | バックスペース文字(0x08、U+0008)とマッチする。単独で使うと単語境界を表すメタ文字\bと被るので文字集合([ ])の内部でのみ使う |
\0 | ヌル文字(0x00、U+0000)とマッチする。0〜7の数字を続けると8進数と解釈されてしまうので注意 |
\cX | 制御文字とマッチする。XはA〜Zの英大文字。いわゆるCtrl+Zなら\cZというように表記する |
\xhh | 2桁の16進数(hh)からなる文字とマッチする(\x20以上) |
\uhhhh | 4桁の16進数(hhhh)からなるUnicodeコードポイントとマッチする(\u0020以上) |
\u{hhhh}〜\u{hhhhhh} | 4〜6桁の16進数からなるUnicodeコードポイントとマッチする(使用にはuフラグが必要) |
表1 文字クラス |
このうち、ドット(.)から\Sまでは第2回で紹介しました。今回は、制御文字やコード指定について紹介します。
[NOTE]Unicodeコードポイント
表1において、タブ文字や復帰文字のコードを「U+0009」などと示しましたが、これはUnicodeにおけるコードポイントを表します。コードポイントとは、Unicodeにおける文字コードのようなもので、各文字に与えられた識別子です。Unicodeであることを表すUの文字とともに、プラス記号(+)に続けて16進数でコードを表記します。Unicodeが制定された初期の頃は4桁の16進数でコードポイントを指定していましたが、その後の文字の拡張で現時点では最大6桁の16進数で指定します。
制御文字にマッチする\t、\nなど
Copyright © ITmedia, Inc. All Rights Reserved.