文章目录
前言
本文代码测试环境:
| 编程语言 | 构建套件 | IDE | 操作系统 | 
|---|---|---|---|
| C++ 11 | Desktop Qt 5.9.9 MSVC2017 64bit | Qt Creator 4.11.0 | Windows10 | 
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
}










