加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Qt中使用正则表达式返回匹配的所有结果集

发布时间:2020-12-14 02:24:16 所属栏目:百科 来源:网络整理
导读:Python的正则中有findAll函数返回一个所有匹配的结果list. 今天在使用Qt的时候发现似乎没有类似的方法.进而自己写了一个,代码如下 /** * @brief 获取所有的匹配结果 * @param text 要匹配的文本 ** @param regexp 正则表达式串 * @return 匹配的结果集 */ QS

Python的正则中有findAll函数返回一个所有匹配的结果list.

今天在使用Qt的时候发现似乎没有类似的方法.进而自己写了一个,代码如下

/**
 * @brief 获取所有的匹配结果
 * @param text 要匹配的文本
 ** @param regexp 正则表达式串
 * @return 匹配的结果集
 */
QSet<QString> UploadBase::getAllMatchResults(const QString text, const QString regexp)
{
    QSet<QString> resultSet;
 
    QRegExp rx(regexp);
    int pos = 0;
 
    while ((pos = rx.indexIn(text, pos)) != -1)
    {
        pos += rx.matchedLength();
        QString result = rx.cap(0);
        resultSet << result;
    }
 
    return resultSet;
}
 
测试:
假如在如下的test.h 要获取所有include的文件名
//test.h
#include <Metro.h>
#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <Wire.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
 可以这么使用 
 
 
QSet<QString> libReference;
QFile file(filePath);//filePath是test.h的路径
if(!file.open(QFile::ReadOnly))
{
    qDebug() << file.errorString();
    return libReference;// return a empty object
}
 
QString code = file.readAll();
 
libReference = getAllMatchResults(code, "w+.h");
 
libReference 中的结果为 Metro.h,FreeSixIMU.h,FIMU_ADXL345.h,sans-serif">FIMU_ITG3200.h,sans-serif">Wire.h,sans-serif">LiquidCrystal_I2C.h,sans-serif">IRremote.h

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读