今天我在我的应用程序中遇到了奇怪的bug。我已经测试了大约2个小时,没有找到解决方案。也许你能帮我解决这个问题。所以就是这样:
#include <iostream>
#include <regex>
#include <vector>
int main()
{
std::regex reg("rmvb|avi|rm|mp4|256");
std::vector<std::string> ext{"rmvb", "avi", "rm", "mp4", "256", "null"};
for (int i = 0; i < 6; i++)
{
std::cout << ext[i] << "\t" << std::boolalpha << std::regex_match(ext[i], reg) << std::endl;
}
return 0;
}
输出:
rmvb true
avi true
rm false
mp4 false
256 false
null false
似乎模式在第二个元素之后被丢弃了-无论我选择什么顺序(我试图交换它们,因为我认为数字可能会导致这个错误-但它们不是)。现在我不知道是怎么回事了。
我使用的是gcc 4.6.3 (Debian4.6.3-1)版本。
发布于 2012-03-19 02:34:08
正则表达式库大部分还没有在libstc++中实现(参见status page)。这可能是一个bug,或者仅仅是没有实现它的结果。我建议使用Boost.Regex作为替代。
https://stackoverflow.com/questions/9764264
复制相似问题