0
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 现场演示

4

1 回答 1

3

libstdc++ 不完全支持正则表达式(您可以在此处查看)。我尝试使用带有 libc++-3.2 的 clang 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
于 2013-09-02T10:42:05.333 回答