在c ++ std :: regex中的前瞻中无效的后向引用

时间:2018-05-05 11:51:55

标签: c++ regex

似乎c ++ std :: regex在前瞻中不支持后向引用。 http://www.regular-expressions.info只表示c ++不支持lookbehind,foreward reference和嵌套引用。我也扫描了c ++ 14标准,一无所获。关于网络上c ++ std :: regex的信息太少。

#include <iostream>
#include <string>
#include <regex>

using namespace std;

int main(int argc, char **argv) {
    regex re("(a)xxx(?=\\1)");
    smatch matchs;
    string str {"axxxa"};
    if(regex_search(str,matchs,re)) {
        cout << "matched" << endl;
    }else{
        cout<<"not matched"<<endl;
    }
    return 0;
}

代码编译,但运行错误位于:

regex re("(a)xxx(?=\\1)");
  

libc ++ abi.dylib:以类型为std :: __的未捕获异常终止1 :: regex_error:表达式包含无效的反向引用。

我的gcc版本:
Apple LLVM版本8.1.0(clang-802.0.42)
目标:x86_64-apple-darwin16.7.0

B.T.W。相同的正则表达式在Nodejs中起作用:

var t = /(a)xxx(?=\1)/;
console.log(t.exec("axxxa"));

谢谢!

0 个答案:

没有答案