0
点赞
收藏
分享

微信扫一扫

ETL、ELT和反向ETL都有什么不同?怎么选择?

文章目录

前言

本文代码测试环境:

编程语言构建套件IDE操作系统
C++ 11Desktop Qt 5.9.9 MSVC2017 64bitQt Creator 4.11.0Windows10

1. 简介

先看函数原型

/**
     * @brief ExtractString         提取特定范围内的字符串,结果使用引用返回
     * @param qstrInPut             原字符串
     * @param qcStartChar           开始符号
     * @param qcEndChar             结束符号
     * @param qvOutPut              所有符合条件的字符串容器
     * @return                      成功返回 0,失败返回 1
     */
    int ExtractString(const QString &qstrInPut, const QChar &qcStartChar, const QChar &qcEndChar, QVector<QString> &qvOutPut);

解释

样例1"shfldsjfk<String001>safdsf<String001>%&*^^*"
样例2"....(Valid characters)......$#&*^*&^#$^%$^*"

头文件

#include <QRegularExpression> 

2. 实现

int ExtractString(const QString &qstrInPut, const QChar &qcStartChar, const QChar &qcEndChar, QVector<QString> &qvOutPut)
{
    // 清空输出容器
    qvOutPut.clear();

    // 检查输入字符串是否为空
    if (qstrInPut.isEmpty()) {
        return 1;  // 失败返回 1
    }

    // 构建正则表达式字符串
    QString regexStr = QRegularExpression::escape(qcStartChar) + "(.*?)" + QRegularExpression::escape(qcEndChar);

    // 创建正则表达式对象
    QRegularExpression regex(regexStr);

    // 检查正则表达式是否有效
    if (!regex.isValid()) {
        return 1;  // 失败返回 1
    }

    // 获取所有匹配的迭代器
    QRegularExpressionMatchIterator it = regex.globalMatch(qstrInPut);

    // 遍历所有匹配项
    while (it.hasNext()) {
        QRegularExpressionMatch match = it.next();
        // 将匹配的尖括号内的内容添加到结果列表
        qvOutPut.append(match.captured(1));
    }

    return 0;  // 成功返回 0
}
举报

相关推荐

0 条评论