QT的正则表达式有前后断言 (?<= ) (?=) 吗
本帖最后由 冥界3大法王 于 2023-4-18 12:32 编辑有以下INI文件
[美女]
NoteName=MeiMei
editBreakCondition=a
editLogText=b
editLogCondition=c
editCommandText=d
editCommandCondition=e
editSwitchCondition=f
editBreakCondition=aaa
editLogText=bbb
editLogCondition=ccc
editCommandText=dddd
editCommandCondition=eee
editSwitchCondition=ffff
NoteName=MeiMei
有以下界面:
怎么没有添加到ComboBox的效果呢?
{:301_974:} {:301_974:} {:301_974:}
#include "SimpleTraceDialog.h"
#include "ui_SimpleTraceDialog.h"
#include "Bridge.h"
#include <QMessageBox>
#include "BrowseDialog.h"
#include "MiscUtil.h"
#include <QSettings>
#pragma execution_character_set("utf-8");
#include <QDir>
#include <QRegularExpression>
#include <QFile>
void SimpleTraceDialog::on_btnLogFile_clicked(bool checked)
{
ui->comboBox->clear();
//ui->comboBox->addItem("中国");
QString iniPath = QCoreApplication::applicationDirPath();
QDir dir(iniPath);
bool bSuccess = dir.cdUp();
if (bSuccess == true) {
iniPath = dir.path() + "/" + "config.ini";
}
QFile file(iniPath);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while (!file.atEnd())
{
QByteArray line = file.readLine();
QString str(line);
// ui->comboBox->addItem(str);
//上面是按行读取写到ComboBox上的测试;下面改成只弄正则对应的的添加
QRegularExpression re("(?<=\[).*(?=\])");
QRegularExpressionMatch match = re.match(str);
if (match.hasMatch())
{
QString matched = match.captured(0);
ui->comboBox->addItem(matched);
}
}
file.close();
}
}
本帖最后由 冥界3大法王 于 2023-4-18 13:25 编辑
请教了下好友,原来各自少了个\{:301_1008:}
另外,另外,我还不能用上面的正则
因为要匹配的内容有【】作为表达式
所以前面改用^开头的行。。。
捕获成功,再执行替换。。 好吧, 学习了 昨天脑袋进水了。。。
匹配^开头的加上断言,后面不变,替换就省了,今天刚清醒。{:301_976:}
页:
[1]