Qt регулярное выражение не соответствует - PullRequest
1 голос
/ 21 ноября 2011

Регулярное выражение Qt (C ++) не работает, как я ожидаю.Например, в следующей строке (пробелы как точки остановки)

.....mRNA............complement(join(<85666..86403,86539..>86727))

«мРНК» не соответствует:

QRegExp rxItem("^\\s{5}(\\w+)") ;

, но соответствует следующему:

QRegExp rxItem("\\s{4}(\\w+)") ;

Похоже, начало строки и первый пробел по какой-то причине не распознаются.Я проверил документацию Qt для QRegExp и, насколько я могу судить, «^» означает начало строки, а \ s - это пробел, как в Perl.

Есть идеи?

Приветствия

1 Ответ

4 голосов
/ 21 ноября 2011

Следующий код:

#include <QtCore/QRegExp>
#include <QtCore/QString>
#include <QtCore/QDebug>

int main(int argc, char *argv[])
{
    QString test = "     mRNA            complement(join(<85666  86403,86539  >86727))";
    QRegExp rxItem( "^\\s{5}(\\w+)" );

    if( rxItem.indexIn( test ) != -1 )
    {
        qDebug() << "Matched" << rxItem.cap( 1 );
    }
    else
    {
        qDebug() << "No match";
    }

    return 0;
}

отображает

Matched "mRNA"

Так что, похоже, работает.Возможно, вы рассматривали результат 0, возвращенный indexIn, как ошибку?

...