導入
「数字」「英数字」「空白」はあまりによく使うので、短い書き方が用意されています。これを 定義済み文字クラス(ショートハンド)と呼びます。[0-9] と毎回書く代わりに \d と書けます。
説明
代表的なものは次の3つと、その大文字版(否定)です。
| 記法 | 意味 | ほぼ同じ意味の文字クラス |
|---|---|---|
\d | 数字1文字 | [0-9] |
\w | 英数字とアンダースコア1文字 | [a-zA-Z0-9_] |
\s | 空白文字(スペース・タブ・改行など)1文字 | [ \t\r\n] |
\D | 数字 以外 1文字 | [^0-9] |
\W | 英数字とアンダースコア以外1文字 | [^a-zA-Z0-9_] |
\S | 空白 以外 1文字 | [^ \t\r\n] |
小文字が「それ」、大文字が「その否定」という対応です。
パターン: \d\d\d 対象: 電話は080です → "080" にマッチ
パターン: \w 対象: a_1 @ → a,_,1 にマッチ(@ はしない)
パターン: \d\s\d 対象: 3 5 → "3 5"(数字・空白・数字)にマッチ
これらを文字クラスの中に入れることもできます。[\d.] なら「数字またはピリオド」という1文字を表せます。
\dは本当に[0-9]か? エンジンの設定によっては、\dが全角数字や他言語の数字にもマッチすることがあります。「半角数字だけ」を厳密に指定したいときは、あえて[0-9]と書くほうが確実な場面もあります。まずは\d ≒ 数字と覚えて問題ありません。
やってみよう
\d(数字)・\w(英数字)・\s(空白)の3つと、大文字がその否定になること ―― この対応を覚えると、パターンがぐっと短く書けるようになります。