2

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

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.

我怎么解决这个问题?

4

1 回答 1

5

您的问题很可能与+*.

+表示出现在它之前的一个或多个,并且表示出现在它之前*的零个或多个(因为在(之前有 a +,它不应该工作,因为这仅仅意味着一个组的开始,而对于+之前*,你不能真正说“一个或多个中的零个或多个”)。

您的意思是.*(即零个或多个)还是.+(即一个或多个)?

于 2013-08-02T11:05:39.800 回答