我正在尝试使用re2,但是当regex中的匹配数在运行时确定时,我无法看到如何从RE2::Arg[]中获取匹配的数据。
我有这样的事情:
const RE2::Arg *args[10] = {};
int n = 0;
if (RE2::ConsumeN(_content.get(), rule.first, args, n)) {
int consumed = _content->data() - start;
//...stuff
}如果我的regex是“( foo )x( bar )”,那么args和args1应该分别是foo和bar,对吗?
我如何从args得到匹配的字符串等等.?
发布于 2015-05-01 21:11:12
IIRC RE2::ConsumeN修改它的第一个参数,这样您就可以调用循环来获得后续的匹配。
试着做这样的事情:
RE2::StringPiece input(_content.get());
while (RE2::ConsumeN(&input, rule.first, args, n)) {
// do your stuff
}如果您正在搜索匹配的FindAndConsumeN,而不是匹配前缀,请参见。
https://stackoverflow.com/questions/29994902
复制相似问题