The special The special item (?R) is provided for the specific case of recursion.
左ブラケットは文字クラスの開始を表し、右ブラケットにより終了 します。右ブラケットは、それ自体特別なものではありません。 右ブラケットがクラスのメンバーとして必要な場合、(もしあるな らば、最初にハット記号を持ってきた後で)クラスの最初の文字データ があるか、バックスラッシュでエスケープする必要があります。 文字クラスは、対象の1文字にマッチします。その文字はクラスにより 定義される文字集合の中にある必要があります。ただし、 クラスの最初の文字がハット記号の場合は、対象文字は暮らすにより 定義される集合のん課兄あってはなりません。 ハット記号がクラスのメンバーとして必要な場合は、必ず、最初の 文字としないか、バックスラッシュでエスケープするようにして下 さい。 例えば、文字クラス [aeiou] は小文字の母音にマッチしますが、 [^aeiou] は小文字の母音以外の文字にマッチします。 ハット記号は、存在しないものを列挙することによりクラスにある 文字を指定する便利な表記です。 ハット記号は、言明ではありません。対象文字列から文字を消費し、 現在のポインタが文字列の終端にある場合には失敗します。 大文字小文字を区別しないマッチが行われた場合、クラスの文字は 大文字・小文字の両方を表します。これは、例えば、大文字小文字 を区別しない場合のマッチ [aeiou] は "a" と同様に "A" にマッチ し、文字小文字を区別しない場合のマッチ [^aeiou] は "A" にマッ チしません。一方、大文字小文字を区別する場合はマッチします。 PCRE_DOTALL または PCRE_MULTILINE オプ ションをどのように設定しようとも改行文字は、文字クラスにおいて特 別な方法で処理されません。[^a] のようなクラスは常に改行にマッチ します。 マイナス (ハイフン)文字は文字クラスの中で文字の範囲を指定する ために使用されます。例えば、[d-m] は d と m の間のあらゆる 文字にマッチします。間にナス文字がクラスの中に必要な場合は、 バックスラッシュでエスケープするか、クラスの最初または最後の ような範囲を示すとは解釈されない場所に使用して下さい。 文字リテラル "]" を範囲の最後の文字として使用することはできま せん。[W-]46] のようなパターンは、2つ文字のクラス("W" および "-")の後にリテラル文字列 "46]" が続いているクラスとして解釈 され、"W46]"または "-46]" にマッチします。しかし、範囲の終端 として解釈される "]" をバックスラッシュでエスケープした場合、 [W-\]46] は範囲の後に2つの文字が続く一つのクラスとして解釈さ れます。"]" の8進あるいは16進表現も範囲の終端として使用可能 です。 範囲指定では、ASCII 照合処理を行います。範囲では、[\000-\037] のように数値的に指定した文字も使用可能です。文字を含む範囲が 大文字小文字を区別しないマッチが設定されているときに使用された 場合、大文字小文字の両方にマッチします。例えば、[W-c] は、 [][\^_`wxyzabc] に等価であり、大文字小文字に関係なくマッチし ます。文字テーブルで "fr" ロケールを使用している場合、 [\xc8-\xcb] は、大文字小文字の区別無くアクセント付きの E に マッチします。 文字型 \d, \D, \s, \S, \w, \W は文字クラスの中でも指定可能 であり、クラスにマッチする文字を追加します。例えば、[\dABCDEF] は、16進数にマッチします。ハット記号は大文字と組み合わせて 小文字にマッチング??より範囲の狭い文字集合を簡便に指定する ことができます。 例えば、クラス [^\W_] は文字または数字にマッチしますが、アンダ ースコアにはマッチしません。\, -, (始端の)^ 以外の全ての英数字でない文字および終端の] は、 文字クラスにおいて特別でない文字ですが、エスケープした場合でも 悪影響はありません。