0

ファイル内のいくつかのディレクトリを取得するために 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;
4

3 に答える 3

1

次の正規表現を使用できます。 R:.*\.c

デモ

于 2015-06-21T14:56:52.480 に答える