使用 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"
我有一个正则表达式 [^/\&\?]+.\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"