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/