前のトピック: 選択次のトピック: ライン アンカ


集合

集合は、集合に含まれる任意の 1 文字と一致する文字集合です。 集合は「[」と「]」で囲まれ、要素としてリテラル、文字範囲、文字クラス、照合要素、および等価クラスが含まれます。 集合の宣言が「^」で始まる場合は、それに続く要素の補集合が含まれます。

文字リテラルの例

文字範囲の例

文字範囲はロケールへの依存度が非常に高いことに注意してください。文字範囲は、範囲の両端の間に並んでいる任意の文字と一致します。デフォルトの C ロケールが有効な場合は、範囲は ASCII ルールに従って動作するのみです。 たとえば、ライブラリが Win32 ローカリゼーション モデルでコンパイルされている場合、「[a-z]」は ASCII 文字の「a」から「z」までだけでなく「A」や「B」などとも一致しますが、「z」のすぐ後に並んでいる「Z」とは一致しません。 このロケール固有の動作は、コンパイル時に regbase::nocollate を指定することによって無効にできます。これは regbase::normal を使用する場合のデフォルト動作であり、範囲の並びを強制的に ASCII 文字コードに従った並びにします。 同様に、POSIX C API 関数を使用する場合は、REG_NOCOLLATE を設定すると、ロケールに依存した並びが無効になります。

文字クラスは、集合の宣言内で構文「[:classname:]」を使用して表現されます。たとえば、「[[:space:]]」は、すべての空白文字の集合です。 文字クラスは、フラグ regbase::char_classes が設定されている場合にのみ使用できます。 利用可能な文字クラスを以下に示します。

alnum

任意のアルファベットと数字。

alpha

任意のアルファベット(a ~ z および A ~ Z)。 ロケールによっては、他の文字も含まれる可能性があります。

blank

任意の空白文字(スペースまたはタブのどちらか)。

cntrl

任意の制御文字。

digit

任意の数字(0 ~ 9)。

graph

任意の図形文字。

lower

任意の小文字(a ~ z)。 ロケールによっては、他の文字も含まれる可能性があります。

print

任意の印刷可能文字。

punct

任意の句読点文字。

space

任意の空白文字。

upper

任意の大文字(A ~ Z)。 ロケールによっては、他の文字も含まれる可能性があります。

xdigit

任意の 16 進文字(0 ~ 9、a ~ f、A ~ F)。

word

任意の単語形成文字 - すべてのアルファベットと数字およびアンダースコア。

unicode

コードが 255 より大きい任意の文字。これはワイド文字特性クラスのみに適用されます。

文字クラスの代わりに使用できるいくつかのショートカットがあります。フラグ regbase::escape_in_lists が設定されている場合に使用できるショートカットを以下に示します。

照合要素は、集合宣言内で [.tagname.] という一般的な形式をとります。ここで、tagname は単一文字または照合要素の名前です。たとえば、[[.a.]] は [a] と等価であり、[[.comma.]] は [,] と等価です。 ライブラリは、POSIX の標準の照合要素名のほか、「ae」、「ch」、「ll」、「ss」、「nj」、「dz」、「lj」の連字を小文字、大文字、およびタイトル ケースでサポートしています。 マルチ文字照合要素から、複数文字に一致する集合が得られます。たとえば、[[.ae.]] は 2 文字に一致します。ただし、[^[.ae.]] は 1 文字にのみ一致することに注意してください。

等価クラスは、集合宣言内で [=tagname=] という一般的な形式をとります。ここで、tagname は単一文字または照合要素の名前であり、照合要素 [.tagname.] と同じ第 1 等価クラスのメンバである任意の文字と一致します。 等価クラスは、同じ並びの文字の集合です。第 1 等価クラスは、第 1 並べ替えキーがすべて同じである文字の集合です(たとえば、文字列は一般に文字によって並べられ、続いてアクセント、そして大文字と小文字によって並べられます。このとき、第 1 並べ替えキーは文字に関連付けられ、第 2 並べ替えキーはアクセントに、第 3 並べ替えキーは大文字と小文字に関連付けられます)。 tagname に対応する等価クラスが存在しない場合、[=tagname=] は [.tagname.] とまったく同じです。 残念ながら、Win32 環境を除くと、文字の第 1 並べ替えキーを取得するロケールに依存しない方法は存在しません。 ほかのオペレーティング システムの場合、ライブラリは、全並べ替えキー(strxfrm から取得)から第 1 並べ替えキーを「推測」するので、Win32 以外のオペレーティング システムでは等価クラスが最も不確実だと考えられます。

集合宣言でリテラル「-」を使用するには、宣言を開始する「[」または「[^」に続く最初の文字、範囲の端、または照合要素として使用します。regbase::escape_in_lists が設定されている場合は「[¥-]」のようにエスケープ文字に続けて使用します。 集合でリテラル「[」、「]」、または「^」を使用するには、それらを範囲の端または照合要素として使用します。フラグ regbase::escape_in_lists が設定されている場合はエスケープ文字に続けて使用します。