使用QRegExp从URL中提取文件名

时间:2016-09-22 19:25:01

标签: c++ regex qt qregexp

我有一个问题,我有一个RegEx,[^ / \& \?] +。\ 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中提取文件名,但只返回任何内容。我不确定出了什么问题。有人可以提供帮助吗?提前谢谢。

1 个答案:

答案 0 :(得分:5)

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

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