Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с QRegExp
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
electronik
Доброго времени.
Помогите с парсингом файла. есть файл вида
Вася Пупкин         1
Таня Гротер          3
12 Оля                  2
14 Петя                 2


Я уже всё голову сломал, как отпарсить эти строки.
Спасибо.
iReset
Цитата(electronik @ 17.8.2012, 15:19) *
Я уже всё голову сломал, как отпарсить эти строки.

А что необходимо получить на выходе?
electronik
Qstring = "Вася Пупкин"
int = "1"

Вот часть кода как парсится файл.
QTextStream in(&file);
        QString line = in.readLine();
        QRegExp rx("((\d\d?$))");
        while(!line.isNull()) {
            line = in.readLine();
            int pos = rx.indexIn(line);
            QStringList list;
            list = rx.capturedTexts();
            if(!list.isEmpty()){
                QString cap1 = rx.cap(1);
                int cap2 = rx.cap(2).toInt();
         }
}

получается что cap1="Вася Пупкин"
a cap2="1"
Sokoloff
Цитата(electronik @ 17.8.2012, 18:09) *
получается что cap1="Вася Пупкин"
a cap2="1"


    QString str = QString::fromUtf8("12 Оля                  22");
    QRegExp re("(.*\\S)\\s+(\\d+)");

    if (re.exactMatch(str)) {
         QString name = re.cap(1);
         QString num = re.cap(2);
         qDebug() << "Name:" << name << " num:" << num;
    }

К сожалению в Qt нельзя указать жадность для конкретного квантификатора, поэтому (.*\\S)

P.s. не забывай удваивать слеши, не \ а \\
electronik
Спасибо огромное!! Заработало!!))
А про двойные слэши я в курсе, просто с другого сайта копипастил и забыл вторые проставить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.