QRegularExpression 查找文件名的数字部分

QRegularExpression to find numeric part of file name

我在 Qstring 中有可用文件的完整路径

Qstring str = "d://output/File_012_xyz/logs";

我想从中提取数字 12。

我试过这样的东西

QRegularExpression rx("[1-9]+");

QRegularExpressionMatchIterator i = rx.globalMatch(str );
if (i.hasNext())
{
    QRegularExpressionMatch match = i.next();
    QString word = match.captured(1);
    quint32 myNum = word.toUInt();
}

这总是 returns myNum 为 0。我在这里做错了什么?

您要求 return 使用 .captured(1) 的捕获组 #1 值,但您的正则表达式中没有定义任何捕获组。

您可以使用

QRegularExpression rx("[1-9][0-9]*");

QRegularExpressionMatchIterator i = rx.globalMatch(str );
if (i.hasNext())
{
    QRegularExpressionMatch match = i.next();
    QString word = match.captured(0);         // <<< SEE HERE
    quint32 myNum = word.toUInt();
}

0组为全场。

此外,像[1-9]+这样的模式不会匹配10200,因此,我建议使用[1-9][0-9]*:非0数字后跟0或更多数字。