正規表現の文字クラスについて

投稿者: Anonymous

このページを参考にしようと思ったのですが、コメントが気になったので質問します


Q1.「文字」と「文字の集まり」という分け方はおかしいでしょうか?
・[ ] の仲間とは、具体的に何を意味しているのでしょうか?

「文字を表すメタキャラクタ」「集合を表すメタキャラクタ」っていう分け方がよく分からないです。 d は文字クラスなので [ ] の仲間ですよね


Q2.「文字クラス」のクラスについて
・以前から疑問に思っていたのですが、「文字クラス」のクラスってどういう意味ですか?
・量指定子なら「演算子の仲間なのかな」と思うのですが

・ d は、下記みたいなクラスがC言語か何かで定義されているのでしょうか?
・それをインスタンス化せずに使っているということ??

class d {}

解決

Q1.「文字」と「文字の集まり」という分け方はおかしいでしょうか?
・[ ] の仲間とは、具体的に何を意味しているのでしょうか?

メタキャラクタであるd[0-9]は同じです。が、[0-9]のうちメタキャラクタは[-]です。
[]というメタキャラクタに挟まれている0-90123456789に展開され、いずれか一文字にマッチします。
[及び]とか(及び)はあくまでも集合/グループを作ることを意味するだけで、その中身はリテラルやメタキャラクタで指定します。
というような区別をつけているのだと思います。

Q2.「文字クラス」のクラスについて
・以前から疑問に思っていたのですが、「文字クラス」のクラスってどういう意味ですか?
・量指定子なら「演算子の仲間なのかな」と思うのですが

定義された文字の区分というか、ある文字と一致する定義した文字のセットというか、そういう感じの意味合いのようです。
正規表現エンジンによって予め定義されたものもあれば、自分で定義するものもあります。

参考文献
* Wikipediaの正規表現の項
* MSDNの正規表現での文字クラスのページ

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *