hallo das ist mein C++ regexC++ Regex Geschwindigkeit optimieren
regex MyRGX(R"~((\w*)\s*[(]([^;]*)[)]\s*[;])~");
und dies ist mein String
Data1 (
anything1
);
diese Regex erhalten Data1
und alles existiert zwischen ();
mit jeder Bedingung. aber wenn ich mehr als 50 Blöcke wie Data1
habe, wird diese Regex-Suchgeschwindigkeit niedriger sein als äquivalente Regex in pcre. Ich denke, dass diese Regex, die ich habe, nicht für die Geschwindigkeit optimiert ist. Hast du irgendeinen Vorschlag, die Geschwindigkeit dieser Regex mit diesen Bedingungen zu erhöhen (alles zwischen ();
und ...)?
Ihre Zeichenfolge sieht für mich nicht wie eine Zeichenfolge aus. – nwp
Sie denken einfach, dass es ist. – Elh48
Meine Vorschläge: Verwenden Sie nicht-einfangende Gruppen ('(? :)' 'anstelle von'() '), wenn möglich. Verwenden Sie '' '' '' 'wenn möglich (da' * 'mit der leeren Zeichenfolge übereinstimmt, gibt es mehr mögliche Verzweigungen als' + '). Und schließlich können Sie das ['optimize'-Flag] (http://en.cppreference.com/w/cpp/regex/basic_regex) im [Konstruktor] verwenden (http://en.cppreference.com/w/ cpp/regex/basic_regex/basic_regex), um eine optimalere Regex zu erhalten (auf Kosten einer langsameren Konstruktion). Ich könnte vorschlagen "regex r (R" ~ ((\ w +) \ s * [(] ([^;] *) [)] \ s * [;]) ~ ", regex_constants :: optimieren | regex_constants :: ECMAScript); '. – Cornstalks