C++ QRegEx帮助,一般为正则表达式

C++ QRegEx帮助,一般为正则表达式,c++,linux,qt,C++,Linux,Qt,我正在努力学习正则表达式。我的任务是用几百个*.png文件生成一个QPixmap。理想情况下,它将是一个PixMap矩阵 我认为QRegEx是执行此操作的最佳方式,因此我可以将pixmap插入矩阵,而无需排序 我尝试匹配的模式: runner_(int)_(int).png 其中第一个整数有界[-1,13],第二个整数有界[00,20]。第二个整数上有一个前导零 这是我的代码尝试: // find the png files in the thing QDir fileDir(

我正在努力学习正则表达式。我的任务是用几百个*.png文件生成一个QPixmap。理想情况下,它将是一个PixMap矩阵

我认为QRegEx是执行此操作的最佳方式,因此我可以将pixmap插入矩阵,而无需排序

我尝试匹配的模式:

runner_(int)_(int).png
其中第一个整数有界[-1,13],第二个整数有界[00,20]。第二个整数上有一个前导零

这是我的代码尝试:

    // find the png files in the thing
    QDir fileDir(iconPath);        
    QFileInfoList fileList = fileDir.entryInfoList();

    QRegExp rxlen("runner_([^\\_]{1,1}])_([^\\_]{1,1}]).png");        
    foreach (const QFileInfo &info, fileList) {
        qDebug() << info.fileName();
        int pos = rxlen.indexIn(info.fileName());
        if (pos > 1) {
            qDebug() << rxlen.cap(1);
            qDebug() << rxlen.cap(2);
        } else {
            qDebug() << "Didn't find any";
        }
    }
//在东西中查找png文件
QDir文件目录(iconPath);
QFileInfoList fileList=fileDir.entryInfoList();
QRegExp rxlen(“runner_u([^\\\\\\\]{1,1}])([^\\\\\\\\{1,1}]).png”);
foreach(const QFileInfo&info,文件列表){
qDebug()1){

qDebug()
{1,1}
是绝对无用的,表示使用了1到1次(即一次)的内容。您只需将元素写入字符串即可

由于您已经完全正确地创建了模式,您可以直接从中构建正则表达式:

runner_(-1|[0-9]|0+[0-9]|0*1[0123])_([0-9]|0+[0-9]|0*1[0-9]|20)\.png
基本上只是为你范围内的所有数字编写模式

编辑以避开圆点。
再次编辑以允许前导零。

这篇文章中没有真正的问题……您如何理解?很明显,我需要有关正则表达式的帮助,否则它不会被标记为前导零。添加“在此场景中使用的最佳正则表达式是什么”如何或者别的什么。我在读它,不得不猜测你真正想要的是什么…代码的帮助?正则表达式的帮助?你没有显示你是否尝试了你写的东西,它是否有效。也就是说,你无法通过阅读来判断问题出在哪里。啊,我明白了。现在我又读了一遍,它确实有点含糊不清。经过适当的编辑。a顺便说一句,如果你真的不关心它们是整数这一事实,也不关心它们的范围是否重要,如果你用
+
替换你帖子中的
{1,1}
,它会起作用(也会吐出很多误报)。我无法使其匹配。我将您的答案复制并粘贴到我的QRegExp中,没有匹配项。可能是我的索引?第二个整数是[00,20]而不是[0,20]实际上是盲目的,这很有效,只是我必须去掉“runner_uu2;”和“.png”bits。我接受这个。谢谢你的帮助。也许这是区分大小写的问题?你应该在文件匹配时关闭它。如果可能的话,总是喜欢完整的正则表达式,包括锚和所有内容。