1

Qt 的正则表达式(C++)没有像我预期的那样工作。例如,在以下行中(空格作为句号)

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

“mRNA”不匹配:

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

但与以下匹配:

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

所以看起来好像由于某种原因无法识别行的开头和第一个空格。我检查了 QRegExp 的 Qt 文档,据我所知,“^”表示行的开头,\s 是 Perl 中的空格。

有任何想法吗?

干杯

4

1 回答 1

4

以下代码:

#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视为错误?

于 2011-11-21T12:13:58.260 回答