我正在使用QRegExp來創建文件中的某些目錄。 他們全部以「R:/開始,並以.C」完成。所以我用「R:/(。*).c」正則表達式語句。Qt正則表達式從第一場比賽開始到最後一場比賽結束
但它具有以下文本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個匹配。
我搜索了答案,並找到? for 。*;如「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;