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 に答える