次: , 前: Strings, 上: Pattern Matching


3.6.3 Flexにおける文字のグループ化

Flexでは、 文字をグループ化して文字クラスにすることができます。 文字クラスは、 文字のグループを角括弧[ ]で囲むことにより作成されます。 どのような文字でも正当です (表示不可の文字についてはエスケープ・シーケンスを使います)。 また、 文字の範囲をハイフン`-'を使って指定することができます。 文字クラスがルールの中で使われている場合には、 Flexはそのクラスの任意のメンバとマッチさせ、 あたかも単一文字が使われているかのように振る舞います。 例えば、

     [a-z]
     [A-Z]*

において、 最初の例は`a'から`z'までの任意の単一文字にマッチします。 第2の例は`A'から`Z'までの任意の文字が0個以上並んだものにマッチします。

否定文字クラスを表す正規表現を書くこともできます。 否定文字クラスは、 (`\n'も含めて) 文字クラスのメンバ以外であれば何にでもマッチします。 これを行うには、 否定すべきクラスの先頭に`^'を置きます。 (クラスの外部では`^'は異なる意味を持つことに注意してください。) 以下に、 正当なクラスの例をいくつか挙げます。

注:Flex、 およびいくつかのバージョンのLexは、 クラス内における逆方向の範囲を扱うことができません。 したがって、

     %%
     [z-a9-0]

はエラー・メッセージを出力します。 逆方向の範囲は指定しないでください。