冥界3大法王 发表于 2023-4-18 12:06

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:23

本帖最后由 冥界3大法王 于 2023-4-18 13:25 编辑

请教了下好友,原来各自少了个\{:301_1008:}
另外,另外,我还不能用上面的正则
因为要匹配的内容有【】作为表达式
所以前面改用^开头的行。。。
捕获成功,再执行替换。。

xouou 发表于 2023-4-18 18:28

好吧, 学习了

冥界3大法王 发表于 2023-4-19 18:34

昨天脑袋进水了。。。
匹配^开头的加上断言,后面不变,替换就省了,今天刚清醒。{:301_976:}
页: [1]
查看完整版本: QT的正则表达式有前后断言 (?<= ) (?=) 吗