0

我遇到了这个问题当我打开一个文本文件时,我无法得到任何匹配的字符串。然后我测试这个模式: .* 但我什么也得不到。我确定可以读取文本文件,并且可以在 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);

将此字符串绑定到正则表达式,它返回一个数字,但是当我使用下一个表达式时

reg.exeacMatch(text);

我什么都得不到。

4

1 回答 1

0

为什么叫QRegExp::escape方法?

试试这个:

 QRegExp reg(".*");

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

于 2014-03-11T22:39:26.273 回答