Flexでは、 文字をグループ化して文字クラスにすることができます。 文字クラスは、 文字のグループを角括弧[ ]で囲むことにより作成されます。 どのような文字でも正当です (表示不可の文字についてはエスケープ・シーケンスを使います)。 また、 文字の範囲をハイフン`-'を使って指定することができます。 文字クラスがルールの中で使われている場合には、 Flexはそのクラスの任意のメンバとマッチさせ、 あたかも単一文字が使われているかのように振る舞います。 例えば、
[a-z] [A-Z]*
において、 最初の例は`a'から`z'までの任意の単一文字にマッチします。 第2の例は`A'から`Z'までの任意の文字が0個以上並んだものにマッチします。
否定文字クラスを表す正規表現を書くこともできます。 否定文字クラスは、 (`\n'も含めて) 文字クラスのメンバ以外であれば何にでもマッチします。 これを行うには、 否定すべきクラスの先頭に`^'を置きます。 (クラスの外部では`^'は異なる意味を持つことに注意してください。) 以下に、 正当なクラスの例をいくつか挙げます。
[abc]
[abc\n]
[a-z]
[^a-z]
[ABcd]
注:Flex、 およびいくつかのバージョンのLexは、 クラス内における逆方向の範囲を扱うことができません。 したがって、
%% [z-a9-0]
はエラー・メッセージを出力します。 逆方向の範囲は指定しないでください。