Qt的正则表达式(C++)无法正常运行。例如,在以下行中(空格作为句点)

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

“mRNA”与以下项不匹配:
QRegExp rxItem("^\\s{5}(\\w+)") ;

但与以下内容匹配:
QRegExp rxItem("\\s{4}(\\w+)") ;

因此,由于某种原因,似乎无法识别行首和第一个空格。我 checkout 了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视为错误?

关于c++ - Qt正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8211291/

10-11 23:40