【问题标题】:Boost.Regex vs C++11 RegexBoost.Regex 与 C++11 正则表达式
【发布时间】:2011-11-27 05:28:55
【问题描述】:

有人能解释一下两者之间的区别吗?现在学习哪个更好?知识如何从一个转移到另一个,反之亦然?

【问题讨论】:

标签: c++ regex boost c++11 boost-regex


【解决方案1】:

boost 正则表达式库将它变成了 C++0x,所以我猜它会慢慢从 boost 中移除。但是,使用 boost 很好,因为您仍然可以在不支持 C++0x 的编译器中使用它。所以这真的取决于你。

【讨论】:

  • 可以,但是可以通过简单的s/boost::/std::/g 将基于 Boost.Regex 的程序迁移到 C++11 Regex 吗?
  • @Rob :我想这取决于您是否使用 Boost.Regex 的 ICU 支持。
  • @Robᵩ 有一些小的变化使得这两个实现不能替代另一个。例如stackoverflow.com/questions/37829849/…
【解决方案2】:

一个主要区别是,C++11 没有为正则表达式提供 Perl 语法。因此,如果您倾向于使用 Perl 语法,则必须使用 Boost::Regex 库。

【讨论】:

【解决方案3】:

至少在 Visual Studio 2013 中,此名称和相关名称(cmatch、regex_match)在两个命名空间中是相同的。它们也有相同(或相似?)的界面。

因此,您只需更改命名空间,相同的代码将使用另一个正则表达式编译,而不会出现警告和错误。当然,它应该是一样的。

附:我更喜欢 std::regex 因为它是 C++11 的一部分,而 boost::regex 是第三方库。我敢肯定,几年后,boost 将取消对 boost::regex 的支持。

【讨论】:

  • 有一些小的改动使得这两个实现不能替代另一个。例如stackoverflow.com/questions/37829849/…
  • 我不希望从 boost 中删除正则表达式,即使它们是相互替换的。那些期望太冒险了。
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 2015-06-27
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
相关资源
最近更新 更多