Я пытаюсь получить с помощью QRegularExpression все атрибуты тега xml в разных захваченных группах.Я использую регулярное выражение, соответствующее тегам, и мне удается получить группы захвата, содержащие значение атрибута, но с квантификатором я получаю только последний.
Я использую это регулярное выражение:
<[a-z]+(?: [a-z]+=("[^"]*"))*>
И я хотел бы получить «а» и «б» с этим текстом:
<p a="a" b="b">
Вот код:
const QString text { "<p a=\"a\" b=\"b\">" };
const QRegularExpression pattern { "<[a-z]+(?: [a-z]+=(\"[^\"]*\"))*>" };
QRegularExpressionMatchIterator it = pattern.globalMatch(text);
while (it.hasNext())
{
const QRegularExpressionMatch match = it.next();
qDebug() << "Match with" << match.lastCapturedIndex() + 1 << "captured groups";
for (int i { 0 }; i <= match.lastCapturedIndex(); ++i)
qDebug() << match.captured(i);
}
И вывод:
Match with 2 captured groups
"<p a=\"a\" b=\"b\">"
"\"b\""
Можно ли получить несколько групп захвата с помощью квантификатора *
или я должен выполнить итерацию, используя QRegularExpressionMatchIterator
с определенным регулярным выражением для строковых литералов?