正则表达式是个强大的东西

暂时先记录一个用法:

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]构建正则表达式测试的更多相关文章

  1. qt之正则表达式

    原地址:http://blog.csdn.net/phay/article/details/7304455 QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一 ...

  2. 正则表达式测试分析工具Expresso

    正则表达式测试分析工具Expresso 一个正则表达式的小工具--myRegexHelper   把以前做的一个功能抽取出来做成一个小的正则表达式测试工具.没什么特色,有两点功能: 一.方便的测试正则 ...

  3. CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

    上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...

  4. 正则表达式测试器 beta_

    说明:"言简意赅".简而从之:如题※网上已经有很多正则的测试工具了※感谢小Z推荐了一款非常好的(但是个别子匹配项多时卡顿.应该是我的表达式问题)故而花了点时间照着“抄”了一个,并配 ...

  5. C# 正则表达式测试工具与分享窗体自适应类

    放假刚回来,自己打算写一个正则表达式的测试工具,因为上次在网上用的一个在线正则表示测试工具就 没有很好的服务自己的,所以才有了现在的想法,想写一个C#开发者用的正则表达式测试工具!期间由于最大化时控件 ...

  6. 基于soapUI构建WebService测试框架

    基于soapUI构建WebService测试框架 http://www.docin.com/p-775523285.html

  7. 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser

    本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...

  8. Qt 内存泄漏测试

    在说Qt的内存测试之前,首先需要说明和肯定的一点是:Qt是绝对没有内存泄漏的,我们必须相信这一点. 接下来,说明一下基于Linux的Qt内存测试工具及其用法和说明: 一.内存测试工具Valgrind ...

  9. 测试驱动 ASP.NET MVC 和构建可测试 ASP.NET MVC 应用程序

    [测试驱动 ASP.NET MVC] http://t.cn/8kdi4Wl [构建可测试 ASP.NET MVC 应用程序]http://t.cn/8kdi4Wj

随机推荐

  1. css-a:visited

    如下代码: <a href="#">链接地址</a> 如果属性 href的设置为'#',则鼠标滑过(即使没有点击',也算成'visited'.而对于 hre ...

  2. 1.redis.3.2 下载,安装、配置、使用 - 1

    1.下载:   2.使用: 挤压之后,使用cmd执行,如下图 redis-server--service-installredis.windows.conf,执行安装 提示成功之后,剩下就好办了, 这 ...

  3. 浏览器兼容问题----Firefox不兼容event的解决方法

    一.event.srcElement:当前事件的源: 在IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcE ...

  4. SQL Server 索引和视图【转】

    Ø 索引 1. 什么是索引 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度. 2. 索引分类 数据库中索引主要分为两类:聚集索引和非聚集索引.SQL Serv ...

  5. C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN

    C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN.NET 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够 ...

  6. Linq XML

    写得比较啰嗦,自己记载备用   1 public class XmlFunction   2     {   3         private static XDocument _doc = new ...

  7. 对有状态bean和无状态bean的理解(转)

    现实中,很多朋友对两种session bean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息.仔细分析并用实践检验后, ...

  8. C++文件操作详解(ifstream、ofstream、fstream)

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...

  9. OpenCV例程实现人脸检测

    前段时间看的OpenCV,其实有很多的例子程序,参考代码值得我们学习,对图像特征提取三大法宝:HOG特征,LBP特征,Haar特征有一定了解后. 对本文中的例子程序刚开始没有调通,今晚上调通了,试了试 ...

  10. phpexcel导入数据库 基于thinkphp3.2

    public function studentImportExcel(){ if (!empty ( $_FILES)){ $upload = new \Think\Upload();        ...