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