Qt5 Qregexp:为什么我的模式不起作用?

时间:2014-03-11 11:17:45

标签: regex qt5 qregexp

我遇到此问题当我打开文本文件时,我无法获得任何匹配的字符串。然后我测试这个模式:。*但我可以得到任何东西。我确定可以读取文本文件,并且可以在grep中接受模式。谢谢。

QList<Nmap_result> ans;
QFile file(path);
if(!file.open(QFile::ReadOnly|QFile::Text))
{
    exit(1);
}

QString text = file.readAll();
QRegExp reg(QRegExp::escape(".*"));

reg.indexIn(text);
qDebug()<<reg.capturedTexts().join("|")<<endl<<reg.captureCount()<<endl;

对不起,我不应该使用逃脱。但是当我改变它时:

QString text = file.readAll();
qDebug()<<text<<endl;
QRegExp reg("[0-9]");

//reg.indexIn(text);          //first bind expr test
reg.exactMatch(text);       //second bind expr test
qDebug()<<reg.capturedTexts().join("|!!!!!|")<<endl<<reg.captureCount()<<endl;

我用

reg.indexIn(text);

将此字符串绑定到regexp,它返回一个数字,但是当我使用下一个expr时

reg.exeacMatch(text);

我一无所获。

1 个答案:

答案 0 :(得分:0)

为什么要拨打QRegExp::escape方法?

请改为尝试:

 QRegExp reg(".*");

调用QRegExp::escape,您的正则表达式变得类似于此字符串:"\\.\\*"。此字符串表示您要立即匹配一个点后跟一个星号。这不是用于此处:匹配零个或多个字符(.*)。