从 re2 Arg 中获取匹配的数据

Get matched data out of re2 Arg

本文关键字:数据 获取 re2 Arg      更新时间:2023-10-16

我正在尝试使用 re2,但当正则表达式中的匹配数在运行时确定时,我看不到如何从 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
}

如果我的正则表达式是"(foo)|(bar)" args[0] 和 args[1] 应该分别是 foo 和 bar 吧?

如何从 args[0] 等获取匹配的字符串...?

IIRC RE2::ConsumeN 修改其第一个参数,因此您可以在循环中调用以获取后续匹配项。

尝试这样的事情:

RE2::StringPiece input(_content.get());
while (RE2::ConsumeN(&input, rule.first, args, n)) {
   // do your stuff
}

另请参阅查找 FindAndConsumptionN 如果您正在搜索匹配项,而不是匹配的前缀。