如何使用QRegExp从QString获取子串?

时间:2015-05-27 06:20:47

标签: c++ qt

我最近开始研究QT。我有一些与QString有关的操作。我需要使用正则表达式匹配字符串中的文件路径来获取主字符串的子字符串。

我想要以下内容:

QString str=" My file is strored on C:\My Folder\Files\Test.txt , and i need to move it."

QRegExp rx("([a-zA-Z]:\\(?:[^\\:]+\\)*((?:[^:\\]+)\.\w+))"); //matches file path

if(str.contains(rx))
{
      Qstring path=str.substring(rx);
      QMessageBox msgBox;
      msgBox.setText(path); // where path is "C:\My Folder\Files\Test.txt" .
      msgBox.exec();
}

我已经搜索了返回子字符串的函数,但到目前为止我还没找到它。像left(), right(), mid()这样的函数有一些相似的任务但不完全正确。所以,任何人都可以告诉我,我该怎么做呢。

1 个答案:

答案 0 :(得分:3)

我想你正在寻找QRegExp::capturedTexts()official documantation

中的一个示例
QRegExp rx("(\\d+)(\\s*)(cm|inch(es)?)");
int pos = rx.indexIn("Length: 36 inches");
QStringList list = rx.capturedTexts();
// list is now ("36 inches", "36", " ", "inches", "es")