[C/C++11]_[初级]_[使用正则表达式库进行分组查询]

news/2023/12/4 21:14:56

场景

1.正则表达式在查询替换字符串数据时效率很高, 可以节省很多不必要的查询代码. 特别是对字符串分组的查询, 可以说如果没有正则表达式,查询分组里的字符串需要写很多额外的代码,还不一定准确.

2.查询并替换XML标签是比较常见的需求, 比如过滤掉HTML标签里的标签, 提取字符串内容等.

例子

1.这里举例了C++正则库的分组查询功能, 一个用于提取特定字符串, 一个用于替换字符串.


// test-regexp.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <regex>
#include <iostream>std::wstring PickLinkShowContent(const wchar_t* buf1){std::wstring buf(buf1);std::wregex pattern(L"(<A HREF=\"[^\"]*\">)([^<]*)(</A>)",std::regex_constants::ECMAScript|std::regex_constants::icase);auto words_begin =std::wsregex_iterator(buf.begin(), buf.end(), pattern);auto words_end = std::wsregex_iterator();std::wstring result;int start = 0;int end = 0;for (std::wsregex_iterator i = words_begin; i != words_end; ++i){std::wsmatch match = *i;size_t pos = match.position();size_t length = match.length();std::wstring prev = buf.substr(start,pos-start);result.append(prev);result.append(match[2]);end = pos+length;start = pos+length;}if(end+1 != buf.length()){result.append(buf.substr(end));}return result;
}std::string ReplaceStr(const char* text,const char* old,const char* _new){std::regex pattern(old);std::string rep(_new);std::string text1(text);std::string tmp = std::regex_replace(text1,pattern,rep);return tmp;
}int _tmain(int argc, _TCHAR* argv[])
{std::cout << "Test regex group 1" << std::endl;const wchar_t* buf = L"You haven't installed QQPCMgr on this computer. "L"Please <a HREF=\"http://www.qq.com\">download</A> and install the latest QQPCMgr first, "L"then reboot the program.";auto result = PickLinkShowContent(buf);std::wcout << result << std::endl;std::cout << "Test regex group 2" << std::endl;static const char* buf2 = """<key>name</key>""<string>百度</string><key>position</key>""<string>2</string>""</dict>""<key>05975BCB-FD95-48A4-A912-37ECACD39871</key>""<dict>""<key>name</key>""<string>必应</string>""<key>url</key>""<string>http://www.bing.com/</string>""<key>position</key>""<string>3</string>";auto result2 = ReplaceStr(buf2,"(<key>position</key>[^<]*)(<string>)([0-9]*)(</string>)","$1<integer>$3</integer>");std::cout << result2 << std::endl;system("pause");return 0;
}````输出<div class="se-preview-section-delimiter"></div>``` XML
Test regex group 1
You haven't installed QQPCMgr on this computer. Please download and install the
latest QQPCMgr first, then reboot the program.
Test regex group 2
<key>name</key><string>百度</string><key>position</key><integer>2</integer></dic
t><key>05975BCB-FD95-48A4-A912-37ECACD39871</key><dict><key>name</key><string>必
应</string><key>url</key><string>http://www.bing.com/</string><key>position</key
><integer>3</integer>

参考

std::regex_replace
使用正则表达式库regex


http://www.ppmy.cn/news/541214.html

相关文章

阿波罗登月计算机技术,你知道吗,阿波罗登月用的计算机还不如你家计算器!...

说起宇宙飞船&#xff0c;绝大部分人的脑海中会蹦出一个词&#xff1a;高大上。每次发射至少都是千万级别的。照这么说&#xff0c;宇宙飞船用的计算机一定都是高配啦。 但&#xff0c;事实貌似不是这样。 令人大跌眼镜的是&#xff0c;天宫一号使用的cpu时钟频率仅10MhZ&#…

19岁的少年发明一款机械计算器,载入史册

1642年&#xff0c;19岁的布莱斯帕斯卡尔发明了他的滚轮式加法器&#xff0c;名为Pascaline&#xff08;帕斯卡林&#xff09;&#xff0c;以帮助他的父亲为法国税务员征税。 Pascaline 是有史以来第一台包含数据携带机制的计算器。凭借该发明&#xff0c;帕斯卡获得了法国国王…

爆改古董卡西欧计算器!能联网、能聊天,「作弊神器」只要150块

晓查 郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一台朴实无华的计算器&#xff0c;卡西欧牌。 看起来和千万学子们所使用的计算器一样&#xff0c;没什么特别的&#xff0c;还带着一些陈旧的使用痕迹。 但如果你用磁铁碰一下&#xff1a; 咦&#xff0c;简直像打开了探险…

avi视频文件太大怎么变小

avi视频格式的优点是图像质量好,但是其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一。avi视频文件太大怎么变小&#xff1f;对于我这个日常工作都是和视频打交道的&#xff0c;新媒体人来说曾经是一个难题。但现阶段的全民在线学习时期&#xff0c;我们只要细心留意就能…

[转载]vfw的AVI族函数读取AVI文件

#include "vfw.h"#pragma comment(lib, "vfw32.lib") #pragma comment(lib, "Winmm.lib")AVIFileInit();PAVIFILE pAviFile nullptr;// 打开AVI文件 int nRet AVIFileOpen(&pAviFile, "10.82.27.20_00_201908231542_part0.avi",…

图像的压缩与恢复

一个图像是如何数字化的呢?不妨从一张玩具鸭子图片说起。 首先要把图片打格子分成若干小块,每块用一个数字来表示一种颜色。如果图像是纯黑白两色的,那每块只用1或0表示即可。若图像是16色的,每块用4位二进 数表示,因为2^4=16,即4位二进制有16种组合,每种组合表示一种颜…

PR进行jpeg的帧压缩,并导出为avi视频

目前比较推崇的方案&#xff1a; 1、在PR中设置序列的属性&#xff1b; 2、调整好输出的分辨率&#xff08;即你的期望&#xff09;&#xff1b; 3、导出为mp4&#xff1b; 4、使用imagJ将MP4转换为avi格式&#xff1b; run("Movie (FFMPEG)...", "choose./…

OpenCV教程(11)-- 图像压缩操作

前言 图片压缩应用很广泛&#xff0c;如生成缩略图等。前期我在进行图片处理的过程中碰到了一个问题&#xff0c;就是如何将图片压缩到指定尺寸&#xff0c;此处尺寸指的是生成图片文件的大小。 我使用 opencv 进行图片处理&#xff0c;于是想着直接使用 opencv 进行图片压缩…

压缩技术

空格压缩(Null Compression) 将一串空格用一个压缩码代替,压缩码后面的数值代表空格的个数。 目录 1 压缩技术 2 基本的压缩技术 3 存储系统压缩 4 文件压缩 5 图形、视频和声音压缩 6 处理多媒体信息的几个... 7 数据通信压缩基本的压缩技术/压缩技术 基本的压缩技术有: 游…

avi规范

RIFF文件规范 Peter Lee 2007-10-02 摘要&#xff1a;RIFF全称为资源互换文件格式&#xff08;Resources Interchange File Format&#xff09;&#xff0c;RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构&#xff0c;常见的如WAV文件、AVI文件等。RIFF可以看成一…

wav avi计算机存储音频,把AVI和WAV文件合二为一

我们要将带字幕的AVI文件与WAV文件进行合成&#xff0c;本次使用的是VirtualDub,VirtualDub免费的多媒体剪辑软件&#xff0c;它的主要功能可以分为两大部分&#xff1a;一是对现有的电影短片文件做编辑、压缩工作&#xff1b;另一是搭配影像捕捉卡实现即时动态影像捕捉。 我们…

python压缩视频文件_python实现视频压缩功能

引言 实现一个视频压缩的功能, 性能优良 压缩视频 从61M 到 11M或者80M到15M 视频看起来没有太大损伤 缺点:耗时20s (win10,CPU:intel i7 8G运存 ) 由于压缩运算需要占用CPU资源,所以时间和性能其实很难兼顾,这个是我个人比较满意的一版 ,记录一下 话不多说,直接上代码…

AVI编码器的常见编码

在视频监控中视频的传输是对考验&#xff0c;尤其是长时间的大图片视频的存储&#xff0c;视频的压缩至关重要。了解AVI编码器就成了必须。笔者整理了在程序应用中遇到的编码器&#xff0c;希望能提供帮助。  AVI编码器的常见编码    1、Cinepak Codec by Radius  它最…

avilib操作avi文件

一、avilib介绍 avilib是一个使用c语言编写的库,可以很方便的对avi文件提取帧和生成avi视频文件。如下列出avilib库的代码。 /** avilib.h** Copyright (C) Thomas streich - June 2001* multiple audio track support Copyright (C) 2002 Thomas streich** Original cod…

【数据压缩】调用VFW库对无压缩avi的解封装

一.实验原理 AVI文件格式是微软公司推出的&#xff0c;Windows操作系统上最常用的流媒体文件之一。AVI文件是一种最复杂的RIFF文件&#xff0c;现在常用的AVI文件有两种&#xff1a;AVI-1和AVI-2。在AVI-2文件中通常包含2个流&#xff0c;一个视频流和一个音频流&#xff08;被…

【数据压缩】WAV文件和AVI文件格式分析

一、WAV文件和AVI文件格式简介 WAV的英文全称是Waveform Audio File Format &#xff0c;它采用 RIFF &#xff08;Resource Interchange File Format&#xff09;文件格式结构。通常用来保存 PCM 格式的原始音频数据&#xff0c;所以通常被称为无损音频。但是严格意义上来讲&…

AVI文件格式

AVI是音频视频交错(Audio Video Interleaved)的英文缩写&#xff0c;它是Microsoft公司开发的一种符合 RIFF文件规范的数字音频与视频文件格式。AVI格式允许视频和音频交错在一起同步播放&#xff0c;支持256色和RLE压缩&#xff0c;但AVI文件并未限定压缩标准&#xff0c;因此…

使用Directshow+Xvid采集并压缩avi视频

偶然的机会下被迫研究了下directshow方面的知识&#xff0c;做点小总结。 在开始要写视频采集程序的时候&#xff0c;先试了VFW&#xff0c;后来发现不太好用&#xff0c;采集效果不太好&#xff0c;而且你支持WDM驱动的设备&#xff0c;因此改用了directshow。 所需工具 1&…

怎么样压缩数据?

文章目录 基本定义RLE 算法莫尔斯编码莫尔斯 VS 哈夫曼可逆压缩 与 非可逆压缩Windows95/98处于16色或256色状态可逆以及不可逆算法适用的情况分析 基本定义 文件&#xff1a; 是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件的大小之所以用…

视频格式那么多,MP4/RMVB/MKV/AVI 等,这些视频格式与编码压缩标准 mpeg4,H.264.H.265 等有什么关系?...

我通过引入下面三个概念来介绍视频压缩知识。分别是&#xff1a;视频文件格式&#xff08;简称&#xff1a;文件格式&#xff09;&#xff0c;视频封装格式&#xff08;简称&#xff1a;视频格式&#xff09;&#xff0c;视频编码方式&#xff08;简称&#xff1a;视频编码&…
最新文章