Я недавно начал работать над QT. У меня есть некоторые операции с QString. Мне нужно получить вспомогательную строку основной строки, используя регулярное выражение, соответствующее пути файла в строке.Как получить подстроку из QString с помощью QRegExp?
я хочу что-то вроде следующего:
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()
, выполняют некоторую подобную задачу, но не точную. Поэтому, пожалуйста, кто-нибудь скажет мне, как я могу это сделать.
Похоже, дубликат этого: http://stackoverflow.com/questions/18374694/how-to-extract-a-list-of-substring-from-a -string-use-qt-regexp – danielfranca
Я не очень хорошо разбираюсь в 'QRegExp', но если вы добавите двойную обратную косую черту по пути, coz qt не сможет понять вашу форму, вы можете получить qstringlist с двумя элементами, отсортировать его с помощью' QStringList :: sort() 'и получите максимальную длину. 'QString str =" Мой файл хранится на C: \\ My Folder \\ Files \\ Test.txt, и мне нужно его переместить. "; QRegExp rx ("\\ w: (\\\\ [a-zA-Z] + \\ s * [a-zA-Z] +) * \\\\ [a-zA-Z0-9] + \ .txt ");' –
Таким образом, я получаю ("C: \ My Folder \ Files \ Test.txt", "\ Files"), первый элемент выглядит так, как вам нужно. –