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中的空格。
有什么想法吗?
干杯
答案 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
返回的结果视为错误?