Regex c++;11正则表达式对象构造函数运行时错误

Regex c++;11正则表达式对象构造函数运行时错误,regex,c++11,Regex,C++11,我必须通过编程生成正则表达式。在这种特殊情况下,我的正则表达式对象应该对应于字符串:([(+1)(+1))(-1)(+1))*([(-1)(-1))) #包括 使用名称空间std; int main() { 正则表达式r(“([(1))]”); cout您的代码至少有三个问题 代码中有一个未闭合的括号(讽刺的是) cout错误消息是prog.cpp:6:31:错误:类型为'regex'的值(也称为'basic_regex')无法在上下文中转换为“bool”。抱歉!在最后一分钟编辑代码后,我没有

我必须通过编程生成正则表达式。在这种特殊情况下,我的正则表达式对象应该对应于字符串:([(+1)(+1))(-1)(+1))*([(-1)(-1)))

#包括
使用名称空间std;
int main()
{
正则表达式r(“([(1))]”);

cout您的代码至少有三个问题

  • 代码中有一个未闭合的括号(讽刺的是)


    cout错误消息是
    prog.cpp:6:31:错误:类型为'regex'的值(也称为'basic_regex')无法在上下文中转换为“bool”
    。抱歉!在最后一分钟编辑代码后,我没有编译代码。我现在已经更新了代码。感谢您的回答!在第3点中,为什么不使用括号来对子类进行分组?我的目的是等效地编写只接受两个字符串ab和cd的正则表达式。我想是这样的应该是[(ab)(cd)]。但它的工作原理与ideone代码不同。
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        regex r("([(<1)((<1))])((<1)(>1))*([(>1)((>1))])");
        cout << (regex_match("<1>1", r) ? "YES" : "NO") << endl;
    }
    
    cout << (regex_match("+1-1", r ? "YES" : "NO") << endl;
    //      ^ here
    
    cout << (regex_match("+1-1", r) ? "YES" : "NO") << endl;