将BOL和EOL与std :: regex匹配

时间:2013-09-02 10:35:09

标签: c++ regex gcc boost std

std::string string("0");
std::regex pattern("^0$",std::regex_constants::extended);
bool match(std::regex_match(string,pattern));

我相信^$必须分别与BOL和EOL匹配。因此,match预计为true,但实际上是false。我错过了什么吗?


gcc-4.8.1 live demo

1 个答案:

答案 0 :(得分:3)

libstdc ++没有完全支持正则表达式(你可以检查它here)。 我试图用clang 3.2和libc ++ - 3.2编译这段代码,结果是“true”。使用libc ++或boost。

特别是libstdc ++正则表达式实现状态

8   Regular expressions
28.1    General N    
28.2    Definitions N    
28.3    Requirements    N    
28.4    Header <regex> synopsis N    
28.5    Namespace std::regex_constants  Y    
28.6    Class regex_error   Y    
28.7    Class template regex_traits Partial  
28.8    Class template basic_regex  Partial  
28.9    Class template sub_match    Partial  
28.10   Class template match_results    Partial  
28.11   Regular expression algorithms   N    
28.12   Regular expression Iterators    N    
28.13   Modified ECMAScript regular expression grammar  N