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);

この文字列を正規表現にバインドするには、数値を返しますが、次の expr を使用すると

reg.exeacMatch(text);

私は何も得ません。

4

1 に答える 1

0

なぜQRegExp::escapeメソッドを呼び出すのですか?

代わりにこれを試してください:

 QRegExp reg(".*");

を呼び出すQRegExp::escapeと、正規表現は次の文字列のようになります"\\.\\*"。この文字列は、ドットの直後に星が続くものと一致させたいことを示しています。これはここで意図された使用法ではありません: 0 個以上の文字に一致します ( .*)。

于 2014-03-11T22:39:26.273 に答える