首页 > 解决方案 > std::regex::multiline 不存在

问题描述

我尝试使用多行正则表达式语法,以便^$匹配 C++ 中的行首和行尾。从 C++17 开始,std::regex应该std::regex_constants包含一个multiline打开它的标志(参见参考资料)。

我已经在 Apple Clang、Ubuntu 和 Alpine 上的 GCC 上试过这个。在所有这些中,它都不起作用,据说该符号丢失了。我究竟做错了什么?我是否误解了这是自 C++17 以来的标准?

#include <regex>
int main() {
  auto flag = std::regex::multiline;
}
$ g++ --version
g++ (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008
$ g++ regex.cpp -std=c++17 -o regex
regex.cpp: In function 'int main()':
regex.cpp:3:27: error: 'multiline' is not a member of 'std::__cxx11::regex' {aka 'std::__cxx11::basic_regex<char>'}
    3 |   auto flag = std::regex::multiline;
      |                           ^~~~~~~~~

标签: c++

解决方案


推荐阅读