我正在尝试使用 QRegularExpression 获取不同捕获组中 xml 标记的所有属性。我使用与标签匹配的正则表达式,并设法获取包含属性值的捕获组,但使用量词,我只得到最后一个。
我使用这个正则表达式:
<[a-z]+(?: [a-z]+=("[^"]*"))*>
我想用这个文本得到“a”和“b”:
<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
在字符串文字上使用特定的正则表达式进行迭代?