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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- NoSQL数据库探讨之一 - 为什么要用非关系数据库
- ruby – 如何使用Nokogiri Builder添加评论
- Swift报错解决" 'try' and the erro
- swift – 扩展通用数组以采用协议
- 浅析layout_weight属性,gravity属性,layout_grav
- Oracle存储过程的编写经验与优化措施(分享)
- PostgreSQL的中文拼音排序
- 关于EASY ARM2100板flash错误导致can't halt
- Flex Flash Builder 4.5 4.6 Eclipse插件 plug-i
- ` 关于postgresql――常用操作指令
热点阅读