我使用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.
我该如何解决这个问题?
答案 0 :(得分:4)
您的问题很可能是+*
。
+
表示其中显示的内容中的一个或多个,*
表示此前显示的内容为零或更多(因为(
之前有+
,它应该不起作用,因为这仅仅意味着一个小组的开始,而对于+
之前的*
,你不能真正说“零或多于一个或多个”。) / p>
您是否可能表示.*
(即零或更多)或.+
(即一项或多项内容)?