我正在尝试解析可以包含文件路径的字符串。我正在使用带有正则表达式库的 C++。我对正则表达式不是很好,这里是 ECMAScript。
我不知道为什么字符串:
"C:\Windows\explorer.exe C:\titi\toto.exe"
不匹配模式(实际上它只找到第一个)
(?:[a-zA-Z]\:|\\)(?:\\[a-z_\-\s0-9]+)+
你有更好的主意来找到每场比赛吗?谢谢!
这是我的代码:
wsmatch matches;
regex_constants::match_flag_type fl = regex_constants::match_default ;
regex_constants::syntax_option_type st = regex_constants::icase //Case insensitive
| regex_constants::ECMAScript
| regex_constants::optimize;
wregex pattern(L"(?:[a-zA-Z]\\:|\\\\)(?:\\\\[a-z_\\-\\s0-9]+)+", st);
// Look if matches pattern
printf("--> %ws\n", path.c_str());
if (regex_search(path, matches, pattern, fl)
&& matches.size() > 0)
{
for (u_int i = 0 ; i < matches.size() ; i++)
{
wssub_match sub_match = matches[i];
wstring sub_match_str = sub_match.str();
printf("%ws\n", sub_match_str.c_str());
}
}