内部オプション設定PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL PCRE_UNGREEDY, PCRE_EXTRA, PCRE_EXTENDED および PCRE_DUPNAMES オプションの設定は、パターン中で変更できます。これには、Perl オプション文字を "(?" と ")" とで括った並びを用います。 オプション文字には以下のものがあります。
例えば、(?im) は、大小文字を区別しない、複数行モードのマッチングを 設定します。ハイフンを前につけることにより、そのオプションを 解除することも可能です。 (?im-sx) のように設定と解除とを 組み合わせることも可能です。この場合、PCRE_CASELESS と PCRE_MULTILINE とが設定され、PCRE_DOTALL と PCRE_EXTENDED とが解除されます。 オプション文字がハイフンの前にも後にも指定された場合、 そのオプションは解除されます。
オプションの変更がトップレベル(つまりサブパターンのカッコの外)で行われた場合、
その変更はパターンの後ろの部分に適用されます。
パターン
サブパターンの内部でオプションの変更を行った場合は、
その効果は違ったものになります。この動作変更は、Perl 5.005
で行われました。サブパターン中のオプション変更は、そのサブパターンの
設定が行われた場所以降の部分にのみ影響します。そのため、パターン
PCRE 特有のオプション PCRE_UNGREEDY および PCRE_EXTRA は、 それぞれ文字 U および X を用いて、Perl 互換のオプションと同様に 変更することが可能です。 (?X) フラグの設定は特別で、最上位においても、 パターン中で他の設定を有効にする前に指定する必要があります。 このフラグは、最初に指定するのが最善です。 |