我尝试使用多行正则表达式语法,使得^$
在C++中匹配行的开头和结尾。自C++17以来,std::regex
和std::regex_constants
应该包含一个标志multiline
,可将其打开(请参考此处)。
我在苹果Clang、Ubuntu和Alpine上尝试了这个方法,但都没有成功,显示符号丢失。我做错了什么?我是否误解了自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;
| ^~~~~~~~~
std::regex_constants::syntax_option_type::multiline
?std::regex_constants::multiline
? - KamilCukstd::regex::multiline
应该可以工作,因为标志常量应该也在std::basic_regex
类中声明。所以这可能是编译器实现中的一个错误。 - Remy Lebeau