我正在使用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;