こんにちは、これは私のC++の正規表現C++正規表現のスピードを最適化
regex MyRGX(R"~((\w*)\s*[(]([^;]*)[)]\s*[;])~");
であり、これは、この正規表現は Data1
を取得し、すべてが任意の条件で();
の間に存在する私の列
Data1 (
anything1
);
です。しかし、私はData1
のような50以上のブロックがある場合、この正規表現の検索速度は、pcreの同等の正規表現よりも低くなります。私は、この正規表現は、スピードを最適化されていないと思う。この条件でこの正規表現のスピードを上げる提案がありますか(すべて();
と...の間に存在しますか?)
あなたの文字列は私にとっては文字列のようには見えません。 – nwp
あなたはそれがそうだと思います。 – Elh48
私の提案:可能であれば、キャプチャしていないグループ( '()'の代わりに '(?:)')を使用してください。可能であれば、 '*'の代わりに '+'を使います( '*'は空文字列にマッチします。最後に、[コンストラクタ](http://en.cppreference.com/w/)で[最適化フラグ](http://en.cppreference.com/w/cpp/regex/basic_regex)を使用することができます。 cpp/regex/basic_regex/basic_regex)より最適な正規表現を得ることができます(より遅い構築コストで)。 regex_constants :: optimize | regex_constants :: ECMAScript(regex_constants :: optimize | regex_constants :: ECMAScript)を使うと、 ); '。 – Cornstalks