Qt正则表达式不匹配

时间:2011-11-21 11:45:05

标签: c++ qt qregexp

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

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

&#34的mRNA&#34;不符合:

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

但是匹配以下内容:

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

因此看起来好像是由于某种原因没有识别出线的起点和第一个空格。我检查了QRegExp的Qt文档,据我所知,&#34; ^&#34;表示行的开头,\ s是Perl中的空格。

有什么想法吗?

干杯

1 个答案:

答案 0 :(得分: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"

所以它似乎正在发挥作用。您是否可以将indexIn返回的结果视为错误?