syntax_option_type
-
typedef implementation_specific_bitmask_type syntax_option_type
syntax_option_type
型は実装固有のビットマスク型で、正規表現文字列の解釈方法を制御する。利便性のために、ここに挙げる定数はすべてbasic_regex
テンプレートクラスのスコープにも複製していることに注意していただきたい。
syntax_option_type の概要
namespace std{ namespace regex_constants{
typedef implementation_specific_bitmask_type syntax_option_type;
// 以下のフラグは標準化されている:
static const syntax_option_type normal;
static const syntax_option_type ECMAScript = normal;
static const syntax_option_type JavaScript = normal;
static const syntax_option_type JScript = normal;
static const syntax_option_type perl = normal;
static const syntax_option_type basic;
static const syntax_option_type sed = basic;
static const syntax_option_type extended;
static const syntax_option_type awk;
static const syntax_option_type grep;
static const syntax_option_type egrep;
static const syntax_option_type icase;
static const syntax_option_type nosubs;
static const syntax_option_type optimize;
static const syntax_option_type collate;
//
// 残りのオプションは Boost.Regex 固有のものである:
//
// Perl および POSIX 正規表現共通のオプション:
static const syntax_option_type newline_alt;
static const syntax_option_type no_except;
static const syntax_option_type save_subexpression_location;
// Perl 固有のオプション:
static const syntax_option_type no_mod_m;
static const syntax_option_type no_mod_s;
static const syntax_option_type mod_s;
static const syntax_option_type mod_x;
static const syntax_option_type no_empty_expressions;
// POSIX 拡張固有のオプション:
static const syntax_option_type no_escape_in_lists;
static const syntax_option_type no_bk_refs;
// POSIX 基本のオプション:
static const syntax_option_type no_escape_in_lists;
static const syntax_option_type no_char_classes;
static const syntax_option_type no_intervals;
static const syntax_option_type bk_plus_qm;
static const syntax_option_type bk_vbar;
} // namespace regex_constants
} // namespace std
syntax_option_type の概観
syntax_option_type
型は実装固有のビットマスク型である(C++ 標準 17.3.2.1.2 を見よ)。各要素の効果は以下の表に示すとおりである。syntax_option_type
型の値は normal
、basic
、extended
、awk
、grep
、egrep
、sed
、literal
、perl
のいずれか 1 つの要素を必ず含んでいなければならない。
利便性のために、ここに挙げる定数はすべて basic_regex
テンプレートクラスのスコープにも複製していることに注意していただきたい。よって、次のコードは、
boost::regex_constants::constant_name
次のように書くことができる。
boost::regex::constant_name
あるいは次のようにも書ける。
boost::wregex::constant_name
以上はいずれも同じ意味である。
Perl 正規表現のオプション
Perl の正規表現では、以下のいずれか 1 つを必ず設定しなければならない。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
正規表現エンジンが解釈する文法が通常のセマンティクスに従うことを指定する。ECMA-262, ECMAScript Language Specification, Chapter 15 part 10, RegExp (Regular Expression) Objects (FWD.1) に与えられているものと同じである。 これは Perl の正規表現構文と機能的には等価である。 このモードでは、Boost.Regex は Perl 互換の |
|
× |
上に同じ。 |
|
× |
上に同じ。 |
|
× |
上に同じ。 |
|
× |
上に同じ。 |
Perl スタイルの正規表現を使用する場合は、以下のオプションを組み合わせることができる。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
文字コンテナシーケンスに対する正規表現マッチにおいて、大文字小文字を区別しないことを指定する。 |
|
○ |
文字コンテナシーケンスに対して正規表現マッチしたときに、与えられた |
|
○ |
正規表現エンジンに対し、正規表現オブジェクトの構築速度よりも正規表現マッチの速度についてより多くの注意を払うように指定する。設定しない場合でもプログラムの出力に検出可能な効果はない。Boost.Regex では現時点では何も起こらない。 |
|
○ |
|
|
× |
|
|
× |
不正な式が見つかった場合に |
|
× |
通常 Boost.Regex は Perl の m 修飾子が設定された状態と同じ動作をし、表明 |
|
× |
通常 Boost.Regex において |
|
× |
通常 Boost.Regex において |
|
× |
Perl の x 修飾子を有効にする。正規表現中のエスケープされていない空白は無視される。 |
|
× |
空の部分式および選択を禁止する。 |
|
× |
元の正規表現文字列における個々の部分式の位置に、 |
POSIX 拡張正規表現のオプション
POSIX 拡張正規表現では、以下のいずれか1つを必ず設定しなければならない。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
正規表現エンジンが IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX), Base Definitions and Headers, Section 9, Regular Expressions (FWD.1) の POSIX 拡張正規表現で使用されているものと同じ文法に従うことを指定する。 詳細はPOSIX 拡張正規表現ガイドを参照せよ。 Perl スタイルのエスケープシーケンスもいくつかサポートする(POSIX 標準の定義では「特殊な」文字のみがエスケープ可能であり、他のエスケープシーケンスを使用したときの結果は未定義である)。 |
|
○ |
正規表現エンジンが IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX), Shells and Utilities, Section 4, Utilities, grep (FWD.1) の POSIX ユーティリティに つまり POSIX 拡張構文と同じであるが、改行文字が |
|
○ |
正規表現エンジンが IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX), Shells and Utilities, Section 4, awk (FWD.1) の POSIX ユーティリティ awk の文法に従うことを指定する。 つまり POSIX 拡張構文と同じであるが、文字クラス中のエスケープシーケンスが許容される。 さらに Perl スタイルのエスケープシーケンスもいくつかサポートする(実際には awk の構文は |
POSIX 拡張正規表現を使用する場合は、以下のオプションを組み合わせることができる。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
文字コンテナシーケンスに対する正規表現マッチにおいて、大文字小文字を区別しないことを指定する。 |
|
○ |
文字コンテナシーケンスに対して正規表現マッチしたときに、与えられた |
|
○ |
正規表現エンジンに対し、正規表現オブジェクトの構築速度よりも正規表現マッチの速度についてより多くの注意を払うように指定する。設定しない場合でもプログラムの出力に検出可能な効果はない。Boost.Regex では現時点では何も起こらない。 |
|
○ |
|
|
× |
|
|
× |
設定するとエスケープ文字はリスト内で通常の文字として扱われる。よって |
|
× |
設定すると後方参照が無効になる。このビットは POSIX 拡張正規表現では既定でオンであるが、オフにして後方参照を有効にすることが可能である。 |
|
× |
不正な式が見つかった場合に |
|
× |
元の正規表現文字列における個々の部分式の位置に、 |
POSIX 基本正規表現のオプション
POSIX 基本正規表現では、以下のいずれか 1 つを必ず設定しなければならない。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
正規表現エンジンが IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX), Base Definitions and Headers, Section 9, Regular Expressions (FWD.1) の POSIX 基本正規表現で使用されているものと同じ文法に従うことを指定する。 |
|
× |
上に同じ。 |
|
○ |
正規表現エンジンが IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX), Shells and Utilities, Section 4, Utilities, grep (FWD.1) の POSIX grep ユーティリティで使用されているものと同じ文法に従うことを指定する。 つまり POSIX 基本構文と同じであるが、改行文字が選択文字として動作する。式は改行区切りの選択リストとして扱われる。 |
|
× |
使用する文法が emacs プログラムで使われている POSIX 基本構文のスーパーセットであることを指定する。 |
POSIX 基本正規表現を使用する場合は、以下のオプションを組み合わせることができる。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
文字コンテナシーケンスに対する正規表現マッチにおいて、大文字小文字を区別しないことを指定する。 |
|
○ |
文字コンテナシーケンスに対して正規表現マッチしたときに、与えられた |
|
○ |
正規表現エンジンに対し、正規表現オブジェクトの構築速度よりも正規表現マッチの速度についてより多くの注意を払うように指定する。設定しない場合でもプログラムの出力に検出可能な効果はない。Boost.Regex では現時点では何も起こらない。 |
|
○ |
|
|
○ |
|
|
× |
設定すると |
|
× |
設定するとエスケープ文字はリスト内で通常の文字として扱われる。よって |
|
× |
設定すると |
|
× |
設定すると |
|
× |
設定すると |
|
× |
不正な式が見つかった場合に |
|
× |
元の正規表現文字列における個々の部分式の位置に、 |
直値文字列のオプション
直値文字列では、以下のいずれか 1 つを必ず設定しなければならない。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
文字列を直値として扱う(特殊文字が存在しない)。 |
literal
フラグを使用する場合は、以下のオプションを組み合わせることができる。
要素 |
標準か |
設定した場合の効果 |
---|---|---|
|
○ |
文字コンテナシーケンスに対する正規表現マッチにおいて、大文字小文字を区別しないことを指定する。 |
|
○ |
正規表現エンジンに対し、正規表現オブジェクトの構築速度よりも正規表現マッチの速度についてより多くの注意を払うように指定する。設定しない場合でもプログラムの出力に検出可能な効果はない。Boost.Regex では現時点では何も起こらない。 |