連載
» 2022年04月15日 05時00分 公開

正規表現における文字の指定方法を深める――「文字クラス」と「Unicodeプロパティエスケープ」ECMAScriptで学ぶ正規表現(4)

正規表現の基本と、ECMAScript(JavaScript)における利用方法を紹介する連載。今回は、文字クラスによる文字の指定方法と、便利なUnicodeプロパティエスケープについて。

[山内直(著)/山田祥寛(監修),WINGSプロジェクト]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「ECMAScriptで学ぶ正規表現」のインデックス

連載:ECMAScriptで学ぶ正規表現

 本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。具体的な利用方法は連載第1回を参考にしてください。

 正規表現を使うポイントに、「検索するパターンをどのように指定するか?」ということがあります。ここで重要なのが、文字の種類に基づく文字クラスです。一般的な正規表現では大ざっぱな指定しかできませんでしたが、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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。