Step by step 正規表現入門 - 文字種別のメタ文字

次のステップは空白文字や単語などを指定するメタ文字です。
今までの知識でも正規表現は使えますが、これらを覚えればより楽に書けるようになります。

文字種別の指定文字

文字種別を指定するメタ文字には次のようなものがあります。
メタ文字 意味 対応する文字クラス
\w 単語。英数字と _(アンダーバー) [a-zA-Z0-9_]
\d 数字 [0-9]
\s 空白文字(スペース、タブ、改行) [ \t\r\n]
また、文字を大文字にするとそれぞれの文字種以外を表すものになります。
  • \W
  • \D
  • \S

[ \t] のように文字クラスの中にも \英数字 は書くことができました。 これと同様に \w なども文字クラス内に書くことができます。
[\w.-] → 英数字と . - 

基本的に日本語の全角文字などは \w などには入らないのですが、 日本語対応の進んでいる Ruby などでは全角のアルファベットも含まれることもあります。

Emacs の場合

Emacs ではルールに違いがあります。
文字 意味
\w 単語。英数字のみで _(アンダーバー) は含まない
\d ×
\sC 構文テーブルの文字セットを指定する。
変数などの単語(シンボル)に使える文字はプログラミング言語によって変わってきます。
例えば、 C 言語では - は使えませんが、 Lisp では使えます。 こうなってくると Lisp の場合には単語用の文字セットとして - を加えたいところです。

これを実現するのが 構文テーブルです。 モードごとに単語、空白文字、閉じかっこなどに使う文字セットを指定することことができます。
これにより空白文字として全角空白を含んだり、 「 と 」 を対応する括弧と認識できたりもします。 また、 \w には日本語も入ってきます。

\s は後に対象となる構文テーブルの文字セットを表す 1 文字を付けて使用します。
単語、空白文字を表す文字はそれぞれ wスペース です。 単語、空白文字を表す特殊文字は \sw と "\s " となります。

なお、 \w は [] の文字クラス内でも使えるのですが、 \s のメタ文字はクラス内では使えません。

Visual Studio の場合

Visual Studio の場合には \ ではなく : を使います。
こちらは 1 文字だけでなく、文字列を指すものもあります。
文字 意味 文字セット表示
:a 英数字。_(アンダーバー) は含まない [a-zA-Z0-9]
:w 英字文字列 [a-zA-Z]+
:i C/C++ 識別子 [a-zA-Z_$][a-zA-Z0-9_$]*
:d 数字 [0-9]
:b 空白文字(スペース、タブ) [ \t]

単語境界

行頭、行末の指定のように単語区切りを表す特殊文字もあります。 これは方言の多いところですが、便利なので紹介しておきます。

例えば、 foo のような単語をコード中から検索したい場合単語の前が行頭だったり、空白や(のような文字だったりします。
barfoo = 8;     // 英数字(これにはマッチさせたくない)
foo = 2;        // 行頭
int foo = 8;    // 空白
if (foo == 0)   // 記号
こんなときに単語境界は \b を使うときちんと指定することができます。
ただし、 [\b] のように文字クラス内に書くとバックスペースの意味になります。
foo       → このままだと barfoo にもマッチ
\Wfoo     → 前が英数字以外。これだと行頭にはマッチしない。
(\W|^)foo → これは OK。
\bfoo     → \b を使うと簡単にかける

また、エディター系では単語境界の \b ではなく、 単語の先頭、末尾を表すメタ文字 < > を持っていることが多いです。
<foo>  → \bfoo\b と似た意味
エディター メタキャラクター
Emacs \< \>
Visual Studio, 秀丸エディター < >

次は ?

これで、覚えておくべき正規表現のルールの説明は完了です。
最後に今まで出てきたルールをまとめておきましょう。
スポンサーサイト
 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
62位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
8位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

03月 | 2017年04月 | 05月
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。