gpt4 book ai didi

c++ - tr1/正则表达式的问题。打印相反的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:09 26 4
gpt4 key购买 nike

知道为什么以下代码会打印“不匹配”吗?与编译器或库版本有关的东西?我用 g++ a.cpp 编译。

#include <tr1/regex>
#include <iostream>
#include <string>

using namespace std;

int main()
{
const std::tr1::regex pattern("(\\w+day)");

std::string weekend = "Saturday and Sunday";

std::tr1::smatch result;

bool match = std::tr1::regex_search(weekend, result, pattern);

if(match)
{
for(size_t i = 1; i < result.size(); ++i)
{
std::cout << result[i] << std::endl;
}
}else
std::cout << "no match" << std::endl;

return 0;
}

最佳答案

绝对是你的编译器的问题。我建议(因为你在 Linux 上,这使得它特别容易)简单地换出 <tr1/regex>对于 <boost/regex.hpp> .命名空间也变为 boost::而不是 std::tr1::但所有其他语法完全相同,它可能会解决您所有的问题。

如果您不能使用 boost,那就完全不同了;但从过去一年左右开始,大多数人/雇主/公司对提振更加友好。

另请注意,您的测试用例存在缺陷。你有一个循环,但它只会打印一个值。 regex_search一次返回一个值,您需要使用新的搜索起始索引不断调用它以获得所有结果。如果你说程序的输出什么都没有(相对于“不匹配”),那么我会说错误在你的代码中。但是 当前编写的代码 应该返回 "Saturday""" .

关于c++ - tr1/正则表达式的问题。打印相反的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com