The C++ Programming language の第 4 版の 1056 ページで、Stroustrup は、無視するサブパターン トークンはであると述べていますが(?
、実際にboost::regex
は です(?:
。Stroustrup が間違っているのではないかと思いますが、標準のコピーを持っている人は誰でも言うことができますか?
1 に答える
2
本の誤植のようです。?:
C++11 は、非キャプチャ グループを作成することを示す ECMA 正規表現構文に従います。この情報は、実際には c++ 標準には含まれていません。
ECMAScript フラグで構築された basic_regex オブジェクトによって認識される正規表現文法は、以下に指定されている場合を除き、ECMA-262 で指定されているものです。
したがって、いくつかの例外がありますが、それらはあなたの質問には影響しません。これはEMCA-262からの引用です。
注 1 形式 ( Disjunction ) の括弧は、Disjunction パターンの構成要素をまとめてグループ化し、一致の結果を保存するのに役立ちます。結果は、後方参照 (\ の後に 0 以外の 10 進数が続く) で使用するか、replace String で参照するか、内部プロシージャに一致する正規表現から配列の一部として返すことができます。括弧のキャプチャ動作を禁止するには、代わりに (?: Disjunction ) の形式を使用します。
于 2013-11-09T00:00:57.403 に答える