Qt正则表达式不匹配

Qt regex not matching

本文关键字:不匹配 正则表达式 Qt      更新时间:2023-10-16

Qt的正则表达式(c++)不像我期望的那样工作。例如,在下一行(空格作为句号)

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

"mRNA"不匹配:

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

但是通过以下方式匹配:

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

因此,由于某种原因,看起来好像行开始和第一个空格没有被识别。我检查了QRegExp的Qt文档,据我所知,"^"表示行开始,s是Perl中的空格。

任何想法?

欢呼

以下代码:

#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返回的结果0当作错误吗?