使用 QRegExp 从 URL 中提取文件名

Extracting the filename off a URL with QRegExp

我有一个正则表达式 [^/\&\?]+.\w{3,4}(?=([\?&].*$|$)) 的问题,但是我无法使用下面 [ 1 ] 中的功能。

[ 1 ] - http://doc.qt.io/qt-5/qregexp.html

这是我试过的代码:

QRegExp rx("[^/\\&\?]+\.\w{3,4}(?=([\?&].*$|$))", Qt::CaseInsensitive, QRegExp::RegExp);
std::ostringstream list;
int pos = 0;
while ((pos = rx.indexIn(url, pos)) != -1) {
    list << rx.cap(1).toStdString();
    pos += rx.matchedLength();
}

return list;

它应该从 URL 中提取文件名,但只是 returns 什么都没有。我不确定出了什么问题。有人可以提供帮助吗?提前谢谢你。

Qt 有 QUrl class 用于解析 URL 等。还有 QUrl::fileName 方法:

QUrl url("http://qt-project.org/support/file.html");
// url.adjusted(RemoveFilename) == "http://qt-project.org/support/"
// url.fileName() == "file.html"