[QT]构建正则表达式测试
正则表达式是个强大的东西
暂时先记录一个用法:
QString str = "Peak memory: KEY s";
QString data = "Peak memory: 24.1 s";
需要构建一个可以匹配 data 的正则表达式,模板为 str ,其中KEY代表需要提取的数据。
PS: 需要注意的是 生成表达式中各种空格时候 \\ 的用法,什么时候用一个,什么时候用2个或者4个,搞错了的话就不会进入if条件语句了。
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QString> #include <iostream>
using namespace std; void generateReg(const QString &data, const QString &str)
{
Q_ASSERT(str != NULL && "Wrong input"); QString dst = str.trimmed(); // generate reg expression
dst.replace(QRegExp("\\s+"), "(\?\:\\s+)");
dst.replace("KEY", "([1-9]+\\.{,1}[0-9]*)"); //dst = "Peak memory:(?:\\s+)([1-9]+\\.{,1}[0-9]*)(?:\\s+)s";
cout << "The reg pattern should be: " << "Peak memory:(?:\\s+)([1-9]+\\.{,1}[0-9]*)(?:\\s+)s" << endl;
cout << "The dst String: " << dst.toStdString() << endl; QRegExp rx(dst);
int pos = data.indexOf(rx); if (pos > -1)
{
cout << endl << "RegExp worked:)" << endl;
QStringList capedStr = rx.capturedTexts();
qDebug() << capedStr;
}
} int main(int argc, char *argv[])
{
QApplication a(argc, argv); QString str = "Peak memory: KEY s";
QString data = "Peak memory: 241 s";
generateReg(data, str); return a.exec();
}
结果如下:

[突然想起有的地方代码可能看不到,还是贴着文本格式备用]
// 突然想起有可能看不了图片
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QString>
#include <iostream>
using namespace std;
void generateReg(const QString &data, const QString &str)
{
Q_ASSERT(str != NULL && "Wrong input");
QString dst = str.trimmed();
// generate reg expression
dst.replace(QRegExp("\\s+"), "(\?\:\\s+)");
dst.replace("KEY", "([1-9]+\\.{,1}[0-9]*)");
//dst = "Peak memory:(?:\\s+)([1-9]+\\.{,1}[0-9]*)(?:\\s+)s";
cout << "The reg pattern should be: " << "Peak memory:(?:\\s+)([1-9]+\\.{,1}[0-9]*)(?:\\s+)s" << endl;
cout << "The dst String: " << dst.toStdString() << endl;
QRegExp rx(dst);
int pos = data.indexOf(rx);
if (pos > -1)
{
cout << endl << "RegExp worked:)" << endl;
QStringList capedStr = rx.capturedTexts();
qDebug() << capedStr;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = "Peak memory: KEY s";
QString data = "Peak memory: 241 s";
generateReg(data, str);
return a.exec();
}
[QT]构建正则表达式测试的更多相关文章
- qt之正则表达式
原地址:http://blog.csdn.net/phay/article/details/7304455 QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一 ...
- 正则表达式测试分析工具Expresso
正则表达式测试分析工具Expresso 一个正则表达式的小工具--myRegexHelper 把以前做的一个功能抽取出来做成一个小的正则表达式测试工具.没什么特色,有两点功能: 一.方便的测试正则 ...
- CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]
上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...
- 正则表达式测试器 beta_
说明:"言简意赅".简而从之:如题※网上已经有很多正则的测试工具了※感谢小Z推荐了一款非常好的(但是个别子匹配项多时卡顿.应该是我的表达式问题)故而花了点时间照着“抄”了一个,并配 ...
- C# 正则表达式测试工具与分享窗体自适应类
放假刚回来,自己打算写一个正则表达式的测试工具,因为上次在网上用的一个在线正则表示测试工具就 没有很好的服务自己的,所以才有了现在的想法,想写一个C#开发者用的正则表达式测试工具!期间由于最大化时控件 ...
- 基于soapUI构建WebService测试框架
基于soapUI构建WebService测试框架 http://www.docin.com/p-775523285.html
- 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...
- Qt 内存泄漏测试
在说Qt的内存测试之前,首先需要说明和肯定的一点是:Qt是绝对没有内存泄漏的,我们必须相信这一点. 接下来,说明一下基于Linux的Qt内存测试工具及其用法和说明: 一.内存测试工具Valgrind ...
- 测试驱动 ASP.NET MVC 和构建可测试 ASP.NET MVC 应用程序
[测试驱动 ASP.NET MVC] http://t.cn/8kdi4Wl [构建可测试 ASP.NET MVC 应用程序]http://t.cn/8kdi4Wj
随机推荐
- 在VS中关于MySQL的相关问题
最近在vs上折腾mysql数据库 遇到了一些小问题,这里记录一下 问题一:数据源选择中没有mysql数据库的选项 解放方法: 1.安装MySql的VS插件(版本请下载最新版)mysql-for-vis ...
- 收集SQLServer线程等待信息
要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...
- ORACLE如何停止一个JOB
ORACLE如何停止一个JOB1 相关表.视图2 问题描述为同事解决一个因为网络连接情况不佳时,执行一个超长时间的SQL插入操作.既然网络状况不好,就选择了使用一次性使用JOB来完成该插入操作.在JO ...
- raw socket遇上windows
最近很长一段时间内又捡起了大学时丢下的网络协议,开始回顾网络协议编程,于是linux系统成了首选,它让我感到了无比的自由,可以很通透的游走于协议的各层. 最初写了个ARP欺骗程序,很成功的欺骗了win ...
- Membership角色与权限管理
安全性:成员资格与角色:验证与授权. 一.建数据库:在VS工具中用DOS环境执行ASPNET_REGSQL 二.配置程序访问数据库: > 在web.config之中加入 <connecti ...
- 283. Move Zeroes(C++)
283. Move Zeroes Given an array nums, write a function to move all 0's to the end of it while mainta ...
- 24种设计模式--桥梁模式【Bridge Pattern】
今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚了多少, ...
- JavaScript各种遍历方式详解
为了方便例子讲解,现有数组和json对象如下 var demoArr = ['Javascript', 'Gulp', 'CSS3', 'Grunt', 'jQuery', 'angular']; v ...
- JavaScript学习心得(七)
一 创建事件监听器 开发人员往往使用事件和元素组合来命名事件处理函数. 创建事件监听器方法: 嵌入式事件处理器即将JavaScript函数赋值给HTML元素属性(不推荐使用:污染HTML:无法应用渐进 ...
- JavaScript学习心得(一)
一Javascript简介 JavaScript是一种面向对象.弱类型的脚本语言!面向对象编程语言(OOP)意味着你用的几乎所有变量都是对象,对象是一种特殊的变量类型,有自己的子变量(称为属性)及函数 ...