ファイル内のいくつかのディレクトリを取得するために QRegExp を使用しています。それらはすべて"R:/で始まり、.c"で終わります。そこで、「R:/(.*).c」正規表現ステートメントを使用しました。
ただし、以下のテキストには 1 つの一致があります。
文章 :
mov f1, dsa
lis r9, sdefwf "R:/frori.c"
addi r3, r9, cwrfg "R:/DWors.c"
li r4, 0*uy
dfr R:/DWors.c
dew d2, fref
一致したテキスト:
frori.c"
addi r3, r9, cwrfg "R:/DWors.c"
li r4, 0*uy
dfr R:/DWors
一致ケースは最初のR:で始まり、テキストの最後の.cで終わりますが、この例では 3 つの一致を検出する必要があります。
答えを探したところ、? のため。* ; "R:/(. *?).c"ステートメントのようなものは、私の例で結果を出す必要があります (一致なし)
テキスト内で 3 つの一致を見つける正規表現ステートメントが必要です。
-------------------------------------------------- -------------------------------------------------- --------
更新: QRegExp 関数の使い方が間違っているかもしれません。
ここに私のコードがあります:
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Text file"), "", tr("All Files (*.*)"));
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QString str;
QString dir;
while (!file.atEnd()) {
str = file.readAll();
}
QRegExp rx("R:(.*)\.c");
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
dir.append(rx.cap(1));
dir.append('\n');
pos += rx.matchedLength();
}
qDebug() << dir;