冥界3大法王 发表于 2022-2-28 11:57

QT程序的前后断言怎么没有效果呢?

源字符串是 :当前程序【OEP】
正则表达式是:(?<=【).*(?=】)

#include <QRegularExpression>
void GotoDialog::on_comboBox_currentIndexChanged(const QString &arg1)
{
// ui->editExpression->setText(ui->comboBox->currentText()); 设置成功!是它,就是它!




    QRegularExpression re("(?<=【).*(?=】));
    QRegularExpressionMatch match = re.match(ui->comboBox->currentText());
      if (match.hasMatch()) {
         QString matched = match.captured(1);
      // QMessageBox::warning(this, tr("Error!"), matched);   垃圾代码仅供测试
         ui->editExpression->setText(matched);
      }
}

hyltlll 发表于 2022-3-4 11:55

你变了,抛弃Delphi了?Qt现在只能玩一下上位机,多平台就算了吧,太臃肿,坑太多!C++语言垃圾,太古老了,就算是做系统底层开发将来也是rust之类的语言,Qt Quick仍然继承了Qt的臃肿和无数的天坑。
看风流IDE,还是要看我大Delphi !!!Delphi神教,千秋万代,一统江湖!

冥界3大法王 发表于 2022-3-4 17:56

hyltlll 发表于 2022-3-4 11:55
你变了,抛弃Delphi了?Qt现在只能玩一下上位机,多平台就算了吧,太臃肿,坑太多!C++语言垃圾,太古老了 ...

@hyltlll
只是为了自己解决x64dbg的某些不好用的地方{:301_971:}

ryosga 发表于 2022-3-5 11:07

字符串编码问题吧, 【】这两个符号是中文字符

ryosga 发表于 2022-3-5 11:22

#include <QRegularExpression>
#include <iostream>

int main()
{
    QRegularExpression re(QString::fromLocal8Bit("(?<=【).*(?=】)"));
    QRegularExpressionMatch match = re.match(QString::fromLocal8Bit("当前程序【OEP】"));
    if (match.hasMatch())
    {
      QString matched = match.captured(0);
      std::cout << qPrintable(matched);
    }
    else
    {
      std::cout << "no match";
    }

    return 0;
}

页: [1]
查看完整版本: QT程序的前后断言怎么没有效果呢?