orl*_*rlp 13 c++ regex boost boost-xpressive
我想在C++中做一些正则表达式,所以我查看了interwebz(是的,我是C++的初学者/中级)并找到了这个SO答案.
我真的不知道在boost :: regex和boost :: xpressive之间做什么选择.有哪些优点/缺点?
我还读到与boost :: regex相对的boost :: xpressive是一个只有头的库.是不是很难在Linux和Windows上静态编译boost :: regex(我几乎总是编写跨平台应用程序)?
我也对编译时间的比较感兴趣.我有一个使用boost :: xpressive的当前实现,我对编译时间不太满意(但我没有与boost :: regex进行比较).
当然,我也对正则表达式实现的其他建议持开放态度.要求是免费的(如在啤酒中)并与http://nclabs.org/license.php兼容.
那么,如果您需要在运行时创建正则表达式(即让用户输入正则表达式进行搜索),则不能使用,xpressive
因为它只是编译时。
另一方面,由于它是一个编译时构造,因此它应该比优化器受益更多regex
。
我用 Boost.MPL、StateChart 和 Spirit 做了足够多的事情,220KB 的编译器警告和错误并没有真正让我烦恼。如果这对您来说听起来很糟糕,请坚持使用 Boost.Regex。
如果您确实使用 xpressive,我强烈建议打开,-Wfatal-errors
因为这将在第一个“error:”行之后停止编译(以及进一步的错误)。
对于编译时间来说,这不是竞争。Boost.Regex 会更快*。xpressive 使用 MPL 的事实将导致编译时间显着增加。
*这假设您只构建 dll/so 一次