#include <regex>
#include <string>
#include <iostream>
using namespace std;
bool IsMatched()
{
string str = R"(Liy_0-3863)";
string re = R"([:\-_a-zA-Z\d]+)";
auto flags = std::regex_constants::ECMAScript;
return std::regex_match(str.data(),
std::regex(re.data(), re.size(), flags));
}
int main()
{
cout << boolalpha << IsMatched();
}
true
; false
。这是谁的错 - clang或gcc?
答案 0 :(得分:4)
g ++(或更确切地说是stdlibc ++)出现错误。
根据ECMAScript规范,应该在字符类中逐字处理转义的减号字符。 libstdc ++没有这样做。它可以在一个更简单的例子上看到
string: a-b
regex: [a\-b]+
gcc说没有匹配,各种正则表达式测试人员说有。不过。