【问题标题】:C++11 Regex Matching [duplicate]C ++ 11正则表达式匹配[重复]
【发布时间】:2013-02-25 02:21:59
【问题描述】:

我正在 C++11 中尝试一个相当简单的正则表达式匹配(使用 gcc 4.7.2),但我遇到了很多麻烦。尝试使用

构建模式
std::regex unquoted(R"regex(\s*([^",]+)\s*)regex");

导致构造函数抛出std::regex_error 异常,代码为std::regex_constants::error_escape。在线的几个正则表达式测试人员对相同的表达式没有问题,我尝试使用不同的一些不同的语法选项无济于事。我没有掌握 C++ 正则表达式语法有什么根本不同吗?

【问题讨论】:

  • 你没有逃脱中间的引用
  • GCC 的正则表达式已损坏/未实现。
  • Huh. 我希望这个例外会说一些类似的话,而不是让我进行三个小时的疯狂追逐。真不幸。
  • 真的很不幸,clang和msvc已经支持正则表达式,但是gcc没有:(

标签: c++ regex gcc


【解决方案1】:

参见gcc's stdc++11 implementation status page——从 gcc 4.8 开始不支持正则表达式

为后代编辑:正如 cmets 中所述,正则表达式库现在位于 libstdc++ 中,并且应该在 gcc 4.9 及更高版本中。

【讨论】:

  • 我尝试使用 clang 构建它并得到了相同的结果 - 是因为无论我使用哪种编译器,我的系统都使用相同的 C++ 标准库?
  • 根据libcxx.llvm.org,clang 自己的 C++ 标准库应该支持正则表达式,但仅在 OSX 上默认使用。在其他平台上,clang 默认使用“本机”C++ 标准库。
  • boost::regex 就是这样。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 2013-01-24
  • 2012-10-31
  • 2020-04-09
相关资源
最近更新 更多