Microsoft C ++异常:内存位置的std :: regex_error

时间:2013-08-02 11:00:25

标签: c++ regex visual-c++ c++11

我使用Visual C ++ 2012编写了以下用于解析命令行参数的代码。 这些命令行参数具有传统的GNU样式( - 选项)。

void parseCmdLines(int argc, wchar_t* argv[]) {
  for (auto i = 1; i < argc; ++i) {
    std::wstring arg(argv[i]);
    // I hope it can match the L"--config=../etc/my.conf"
    std::wregex regex(L"--config=(+*)");
    std::wsmatch match;
    std::regex_match(arg, match, regex);

    // TODO: ...
}

不幸的是,当我运行这个程序时,我遇到了一个例外。异常的描述如下:

Microsoft C++ exception: std::regex_error at memory location 0x23F090.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您的问题很可能是+*

+表示其中显示的内容中的一个或多个,*表示此前显示的内容为零或更多(因为(之前有+,它应该不起作用,因为这仅仅意味着一个小组的开始,而对于+之前的*,你不能真正说“零或多于一个或多个”。) / p>

您是否可能表示.*(即零或更多)或.+(即一项或多项内容)?