std::string string("0");
std::regex pattern("^0$",std::regex_constants::extended);
bool match(std::regex_match(string,pattern));
我相信^
并且$
必须分别匹配 BOL 和 EOL。因而match
预期是true
但实际上是false
。我错过了什么吗?
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