保存/序列化boost或std regex

MBZ*_*MBZ 7 c++ regex boost std

是否可以序列化/反序列化并将正则表达式保存/加载到文件中?

我们有一个非常耗时的过程构建了一些正则表达式,我想知道我们是否可以通过保存和加载来节省一些时间.

Ali*_*ice 7

不,这可能是不可能的,因为无论如何它都需要你重新编译正则表达式.

但是,如果使用boost :: xpressive,则可以通过正则表达式的表达式模板构造在编译期间编译正则表达式.这将使正则表达式编译时间完全消失.

提升Xpressive

但是,使用多余的时间使用的真正原因几乎可以肯定是你通过使用回溯正则表达式引擎不正确地使用正则表达式IE.

RE2是一种传统的自动机正则表达式引擎,它不使用回溯,而是直接构造NFA或DFA.如果您不使用反向引用或许多基于非正则表达式的"特征",则使用RE2将显示许多极端情况的速度增加的数量级.

如果您正在使用这些功能,您应该意识到它们将严格控制匹配的速度,并且它们几乎肯定是您寻求消除速度减慢的主要原因.