Получить согласованные данные из Re2 Arg

Я пытаюсь использовать 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] и так далее …?

0

Решение

IIRC RE2 :: ConsumeN изменяет свой первый аргумент, поэтому вы можете вызывать в цикле, чтобы получить последующие совпадения.

Попробуйте что-то вроде этого:

RE2::StringPiece input(_content.get());

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

Смотрите также FindAndConsumeN, если вы поиск для совпадений, а не совпадающих префиксов.

0

Другие решения


По вопросам рекламы [email protected]