奇怪的bug – std :: regex只匹配前两个string

今天我遇到了一个奇怪的bug, 我已经testing了2小时,没有find解决scheme。 也许你可以帮我解决这个问题。 所以这里是:

#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 

看起来这个模式在第二个元素之后被抛弃 – 不pipe我select什么顺序(我试图交换它们,因为我认为数字可能会导致这个错误 – 但它们不是)。 现在我不知道发生了什么事。

我使用的是gcc版本4.6.3(Debian 4.6.3-1)。

Solutions Collecting From Web of "奇怪的bug – std :: regex只匹配前两个string"