C++正则表达式速度优化



你好,这是我的 C++ 正则表达式

regex MyRGX(R"~((w*)s*[(]([^;]*)[)]s*[;])~");

这是我的字符串

Data1 (
   anything1
);

这个正则表达式得到 Data1,一切都存在于任何条件下();之间。但是当我有超过 50 个像 Data1 这样的块时,这个正则表达式搜索速度将低于 PCRE 中的等效正则表达式。我认为我拥有的这个正则表达式没有针对速度进行优化。您是否有任何建议在此条件下提高此正则表达式的速度(让一切都存在于 (); 和 ...

正如我从你之前的问题中怀疑的那样,这看起来像是正则表达式不是最合乎逻辑的解决方案的情况。

"正则表达式"

来自描述"常规语言"的"正则表达式"。带有匹配括号的语言(如C++本身)是不规则的。现在,我们所说的"正则表达式"已经发展到包括一些非常规语言,但这不是最佳的。

在这种情况下,看起来一个完全普通的解析器可以工作。据我了解,目标是寻找();之间的任何东西。所以做一个简单的文本搜索向前搜索(,向后搜索);。检查是否找到两者,并且();之前,然后使用找到的索引对来提取子字符串。

最新更新