有没有一种内置的方法只迭代非空捕获,或者我需要使用lambda/修改我的正则表达式?
例如,给定:const auto input = "Peas&Carrots Spinach-Casserole Beets Pizza Spinach-Salad Coleslaw"s
,我想找到不包含“Spinach”的食物。所以我可以这样做:
const regex re{ "\\s*(?:\\S*Spinach\\S*|(\\S*))" };
copy(sregex_token_iterator(cbegin(input), cend(input), re, 1), sregex_token_iterator(), ostream_iterator<string>(cout, "\n"));
当然问题在于,我得到了类似以下的输出:
豌豆和胡萝卜
甜菜根
披萨
美式卷心菜沙拉
有没有什么解决方法?