サイズとその他の制限
PCRE2にはいくつかのサイズ制限がありますが、実際の利用では問題にならないことを期待しています。
8ビットと16ビットのライブラリーで、内部リンクサイズを既定値の2バイトとしてPCRE2をコンパイルした場合、コンパイル済みパターンの最大サイズは、およそ64,000コード単位です。非常に巨大な正規表現を処理したい場合は、内部リンクサイズを3または4にしてPCRE2をコンパイルできます(16ビットライブラリーのビルドでは、3は4へ切り上げられます)。詳細は、ソース配布物のREADMEと、pcre2buildの文書を参照してください。この場合、上限は大幅に大きくなりますが、実行速度は遅くなります。32ビットライブラリーでは、内部リンクサイズは常に4です。
入力するパターン文字列の最大長は、実質的に無制限で、PCRE2_SIZE変数に格納できる最大の数です。ただし、pcre2_compile()を呼ぶプログラムは、より小さい上限を指定できます。
対象文字列の最大長(コード単位数)は、PCRE2_SIZE変数に格納できる最大の数より1小さい値です。PCRE2_SIZEは符号なし整数型で、通常はsize_tとして定義されています。その最大値、すなわち~(PCRE2_SIZE)0は、ゼロ終端文字列や未設定のオフセットを示す特別な値として予約されています。
繰り返し量指定子に指定する値は、すべて65536未満でなければなりません。
後読みアサーションの分岐には、2種類の上限があります。アサーション内のすべての分岐が固定個数の文字に一致する場合、各分岐の最大長は65535文字です。文字数が可変の分岐が1つでもある場合は、すべての分岐について、一致する長さの最大値が制限されます。既定の上限はコンパイル時に設定され、既定値は255ですが、呼び出し側のプログラムで変更できます。
括弧で囲むグループの数に制限はありませんが、捕捉グループの数は65535以下でなければなりません。また、括弧で囲むすべての種類の部分パターンについて、入れ子の深さに制限があります。これは、コンパイル時に使うシステムスタックの量を制限するためです。既定の上限はPCRE2のビルド時に指定でき、指定しなければ250になります。アプリケーションはpcre2_set_parens_nest_limit()を呼び、コンパイルコンテキストに上限を設定することで、この値を変更できます。
名前付き捕捉グループの名前の最大長と、そのようなグループの最大数は、ビルド時に設定できます。名前の最大長の既定値は128コード単位、名前付きグループの最大数の既定値は10000です。
(*MARK)、(*PRUNE)、(*SKIP)、(*THEN)動詞内の名前の最大長は、8ビットライブラリーでは255コード単位、16ビットと32ビットのライブラリーでは65535コード単位です。
コールアウトへ渡す文字列引数の最大長は、32ビットの符号なし整数に格納できる最大の数です。
照合に使うヒープメモリー量の最大値は、ヒープ上限によって制御されます。この上限は、パターンまたは照合コンテキストに設定できます。既定値は非常に大きな数で、実質的には無制限です。
著者
Philip Hazel
University Computing Serviceを退職
英国ケンブリッジ。
改訂
最終更新日: 2025年9月3日
Copyright © 1997-2023 University of Cambridge.