c++ boost库正则表达式的一些经验

使用正则表达式解析一般sql语句(C++) 趁这个时候把之前写过的代码都贴上来吧。 正则表达式一用,整个人都感觉神清气爽了,会了正则表达式,表示字符串解析什么的,顿时轻松了不少啊。不过C和C++现存的大部分编译器是不支持正则表达式的,最新出来的C++10标准(貌似是C++10)中新加入了正则表达式,但是支持最新标准的编译器较少,VS最新版本的应该是支持的。不过博主一直对CodeBlocks情有独钟,忠心不二啊。这就得给编译器装boost函数 阅读详情

首先,我的匹配设置为:

// 忽略大小写
regex expression( str_pattern ,  boost::regbase::normal|boost::regbase::icase);


如果要匹配的字符串当中含有双引号

比如: acp"abc"dgg ,在c++当中写法如下:

string aa = "acp\"abc\"dgg"; 

要提取当中的abc,那么pattern应该怎么写呢?

找规律发现只要这样写就行:

string pattern = "p\"(.*?)\"d"; 


如果要匹配的字符串当中带有2个空格,acp  "abc"  dgg , 则可以用 +代替(注意前面有一个空格,加号是重复1次或者多次的意思)

string pattern = "p +\"(.*?)\" +d"; 



经过网上查询,boost匹配规则,注意这个规则可能和其他的regex库不一样,因为有不同的format限制:

(参考文献:http://blog.youkuaiyun.com/sammy_chan/article/details/8440230)

Escapes 转义符: 
\cX 一个ASCII转义序列 - 字符码点为 X % 32 
\xdd 一个十六进制转义序列 - 匹配码点为0xdd的单个字符。 
\x{dddd} 一个十六进制转义序列 - 匹配码点为0xdddd的单个字符。
\0ddd 八进制转义序列 - 匹配码点为0ddd的单个字符。 
\N{name} 匹配 符号名 为 name 的单个字符。例如 \N{newline} 匹配单个字符 \n。 


也就是说通过在线查询可以得到字符的16进制ASCII码:

http://www.goberl.com/functionAspx/regex.aspx

比如我要匹配的是半角的双引号,那么我输入" 点查询,可以得到如下结果:

输入一个字符	"
十进制ASC码	34
十六进制ASC码	22
八进制ASC码	42
正则表达式匹配	\u0022

按照boost的匹配格式,以成\xdd为例,应该写成:\x22

下面进行必要的测试:

string pattern = "p\\x22(.*?)\\x22d"; 

最终发现匹配成功! ^ ^



常用正则表达式:

http://www.jb51.net/tools/regex.htm


在C++项目中,如何权衡使用Boost库与坚持使用STL的标准组件 在C++软件开发领域,标准模板库(STL)与Boost库均扮演着至关重要的角色,分别提供了丰富的数据结构、算法和其他实用工具。然而,在实际项目中,开发者常常面临如何在这两者之间做出合理选择的问题。本文旨在深入分析STL与Boost库各自的特性,并给出在不同情况下何时选择使用哪一个的具体指导。 阅读详情

相关推荐

Windows下Boost C++库安装配置全指南:从下载到项目集成

C++标准库为开发者提供了基础功能,但在实际工程中,常需处理网络通信、文件系统、多线程等复杂任务,标准库的覆盖范围有限。Boost库作为C++标准库的扩展与试验场,通过严格的同行评审,提供了大量高质量、可移植的组件,其设计思想深刻影响了C++11/14/17等现代标准。从原理上看,Boost通过头文件库和需编译的二进制库两种形式交付,前者直接包含即可使用,后者则需正确链接。其技术价值在于,既能兼容老旧编译器环境,提供智能指针、正则表达式等现代特性,又能让开发者提前接触如Asio(异步I/O)、Spirit(

weixin_42557803的博客 394

C++ 正则表达式(匹配、搜索、替换)

首先C++的正则表达式的速度比boost的正则表达式的数据要慢很多。链接:简单正则表达式的使用:一:匹配 regex_matchregex_match 要求的是内容完全匹配正则表达式,一个错误都不行。二:搜索匹配 regex_searchregex_search 要求的是只要内容中存在正则表达式的要求就是正确的。三:匹配替代 regex_replaceregex_replace 要求的是只要内容中存在正则表达式的要求就替换成新的文字正则表达式特殊字符的处理。

qq_38409301的博客 4991

C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)

<br />1、C++各大有名库的介绍——C++标准库<br />2、C++各大有名库的介绍——准标准库Boost<br />3、C++各大有名库的介绍——GUI<br />4、C++各大有名库的介绍——网络通信<br />5、C++各大有名库的介绍——XML<br />6、C++各大有名库的介绍——科学计算<br />7、C++各大有名库的介绍——游戏开发<br />8、C++各大有名库的介绍——线程<br />9、C++各大有名库的介绍——序列化<br />10、C++各大有名库的介绍——字符串<br

海峡 专栏 9739

BOOST库学习之正则表达式

前言 正则表达式的简介 正则表达式的匹配 正则表达式的查找 正则表达式的替换 正则表达式的迭代 正则表达式的分词 一、正则表达式的简介 1、正则表达式的匹配规则 正则表达式定义了一套复杂的语法规则,用于匹配有特定模式的字符串。在正则表达式中,大部分字符都匹配自己(普通字符),只有少量的字符用于定义特殊匹配模式的语法,如下所示: 特别字符 描述 $ 匹配输入字符串的结尾位置。要匹配 $ 字符本身,请使用 $。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。

qq_40223389的博客 906

C++ Boost库环境配置实战:VS、Dev-C++与VSCode全攻略

在C++开发中,第三方库的集成是提升开发效率的关键环节,而环境配置则是这一过程的基础。其核心原理在于编译器与链接器对头文件和库文件的查找机制:编译器通过包含目录定位头文件以进行语法解析和预处理,链接器则通过库目录和链接依赖项来解析外部符号引用,最终生成可执行文件。这一机制的技术价值在于实现了代码的模块化与复用,是现代软件工程依赖管理的基石。在实际应用中,不同开发环境(如Visual Studio、Dev-C++、VSCode)对此机制的实现方式各异,导致配置步骤存在显著差异。本文聚焦于被誉为“C++标准库试

weixin_28718769的博客 340

boost 正则表达式详解

boost正则表达式教程 boost正则表达式详解

Boost 学习--正则表达式

1、元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 2、转义 \ 后接特殊字符 3、重复 重复零次或多次 重复1次或多次 ?重复0次或一次 {n}重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 4、字符类 [aeiou] 匹配元音字符 [a-z0-9] 支持匹配一个范围 5、分枝条件 | 匹配两个正则表达式的其中之一 6、分组 ()在后面接重复数字

realjc的博客 1243

Python Selenium自动化浏览器实战:从环境搭建到高级技巧

浏览器自动化是现代软件开发与数据处理中的关键技术,它通过程序模拟用户操作,实现网页交互的自动化执行。其核心原理是基于WebDriver协议,通过驱动程序与浏览器进行通信,从而控制浏览器的各种行为。这项技术的价值在于能够将重复性高、耗时长的Web操作转化为可编程、可复用的脚本,极大提升工作效率和准确性。在应用场景上,它广泛覆盖了Web自动化测试、数据采集与爬虫、日常办公流程自动化以及RPA(机器人流程自动化)等多个领域。本文聚焦于Python环境下Selenium这一经典工具,深入讲解其环境配置、八大元素定位

anwenzhao0749的博客 445

深入浅出C/C++中的正则表达式库(二)——Boost.Regex

原创文章,转载请注明出处:小武哥的博客 本文固定链接:http://www.wuzesheng.com/?p=965 写在前面:本文是《深入浅出C/C++中的正则表达式库》系列的第二篇,如果对本文感兴趣,相信你也会对《深入浅出C/C++中的正则表达式库——GNU Regex Library》感兴趣。本文主要介绍Boost中的正则表达式库,通过介绍其基本内容与相关接口,希望...

weixin_34034670的博客 276

LightRAG实战:从零构建中药知识图谱,解锁六种检索模式效能对比

本文详细介绍了如何使用轻量级RAG框架LightRAG从零构建中药知识图谱的实战过程。通过本地部署环境搭建、开源模型配置与《本草纲目》数据导入,文章重点对比了Naive、Local、Global、Hybrid、Mix和Bypass六种检索模式在中药问答中的效能差异,并提供了可视化图谱与优化心得,为开发者构建专业领域智能问答系统提供了实用指南。

weixin_29096377的博客 176

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 226

Boost学习之正则表达式--regex

来源:http://blog.chinaunix.net/uid-21222282-id-1829265.html 来源:http://www.cnblogs.com/undermoon/archive/2009/11/30/1613508.html 来源:http://blog.youkuaiyun.com/guyulongcs/article/details/...

weixin_34148508的博客 550

3D高斯溅射融合Gabor滤波器:频率感知如何提升神经渲染效率与质量

在计算机视觉与图形学领域,3D场景重建旨在从多视角图像中恢复真实世界的三维结构与外观。其核心原理是通过优化场景表示,使渲染出的二维图像与输入照片尽可能一致。传统方法在效率与细节保真度间常面临权衡,高频细节(如精细纹理、锐利边缘)的重建尤为消耗算力。频率感知技术为此提供了突破方向,它借鉴信号处理思想,将场景分解为不同空间频率的成分进行针对性建模。Gabor滤波器作为经典的频率-方向分析工具,能有效刻画纹理的局部频域特征。将Gabor的频率选择性与3D高斯溅射(3DGS)这一高效显式表示结合,构成了神经Gabo

weixin_33087827的博客 272

boost 之正则表达式

最近做个小东西,用到了正则表达式,因为用的是C++,想赶下潮流,用下boost, 开始用boost::xpressvie, 在一台HP上一切都是正常的,然后到Sun的机器上进行编译,发现居然编译不过,晕倒了,还好及时到boost的网站上提交报告,不然自己瞎折腾,徒是浪费时间。 目

hnhbdss的专栏 810

手把手教你用Python实现最简单的语义通信(Sem Comm)Demo

本文通过Python和PyTorch,手把手教你构建一个基于深度学习的语义通信(Semantic Communication)Demo。该Demo使用自编码器架构,从MNIST图像中提取低维语义特征进行传输与重建,实现了从“传输比特”到“传递含义”的跨越,并探讨了其效率优势与鲁棒性。

weixin_29080843的博客 246

STM32F103+AX58100 EtherCAT从站SPI移植实战:CubeMX配置避坑指南

本文详细介绍了STM32F103与AX58100 EtherCAT从站控制器的SPI接口移植实战,重点解析CubeMX配置中的关键参数与常见陷阱。内容涵盖硬件连接规范、SPI模式设置、中断优先级规划及协议栈对接技巧,帮助开发者高效实现工业自动化领域的实时通信方案。特别强调CPOL/CPHA配置与AX58100的匹配要求,避免数据错位问题。

weixin_29230865的博客 331

《超越C++标准库:Boost库导引》:Boost库简介-字符串和文本处理

字符串和文本处理Boost.Regex正则表达式对于解决相当数量的模式匹配(pattern-matching)问题是至关重要的。它们经常被用于处理长字符串、非精确地查找子字符串、根据某些格式tokenize字符串,或者依照某个标准对字符串进行修改。以前C++缺少对于正则表达式的支持,用户不得不求助于其它对正则表达式有强有力支持的语言,比如Perl,awk和sed。Regex对于正则表达式提供高效有

5403

西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告

3、用二极管正向虚拟IV仪测出数据,并记录数据于虚表3和虚表4。1、按照指导书multisim仿真软件上画出三种模型电路图,1、按照指导书multisim仿真软件上画出三种模型电路图,1、按照指导书multisim仿真软件上画出三种模型电路图,表6 二极管三种模型参数测试表(电源电压=1.2V)2、用万用表测出数据,并记录数据于虚表1和虚表2。2、用万用表测出数据,并记录数据于虚表5和虚表6。表5 二极管三种模型参数测试表(电源电压=12V)二极管三种模型参数测试表(电源电压=12V)

Welcome To My6n Blog 4081

C++为什么要学习STL和Boost库

最近一年我电话面试了数十位 C++ 应聘者,惯用的暖场问题是“工作中使用过 STL 的哪些组件?使用过 Boost 的哪些组件?”。得到的答案大多集中在 vector、map 和 shared_ptr。如果对方是在校学生,我一般会问问 vector 或 map 的内部实现、各种操作的复杂度以及迭代器失效的可能场景。如果是有经验的程序员,我还会追问 shared_ptr 的线程安全性、循环引用的后果...

haimianjie2012的专栏 3133

在 SAP Fiori 里玩转 Manage Views:把过滤器与列表布局固化成你的默认工作台

本文介绍了SAP Fiori应用中"Manage Views"功能的核心价值和使用方法。该功能允许用户保存和复用个性化界面设置,包括筛选条件、列布局等,将重复操作简化为一次性配置。文章从技术实现、用户操作和治理建议三个维度展开: 功能本质:View存储的是界面状态而非业务模型,是提升个人生产力的工具 核心价值:固化高频操作,支持默认视图设置,实现"开箱即用"的工作状态 操作指南:详细说明了收藏、重命名、设为默认、自动应用等关键功能 治理建议:区分标准视图、个人视图和公

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 126

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C++ BOOST库中文指南下载介绍:程序员的编程利器

C++ BOOST库中文指南下载介绍:程序员的编程利器 【下载地址】CBOOST库中文指南下载介绍 这是一份由官方文档翻译而来的C++ BOOST库中文指南,经过精心制作,为程序开发者提供了宝贵的参考资料。指南深入解析了C++ BOOST库的强大功能,帮助开发者提升编程效率与代码质量。其特点包括权威的官方文档中文翻译,手...

gitblog_06774的博客 578

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Boost 简介

您的问题涉及编译库(libboost_system-vc143-mt-gd-x64-1_88.lib 和 libboost_log-vc143-mt-gd-x64-1_88.lib),因此后续会重点讲解编译和配置。针对您的问题(无法生成 libboost_system-vc143-mt-gd-x64-1_88.lib 和 libboost_log-vc143-mt-gd-x64-1_88.lib),提供了详细的编译步骤,强调使用 x64 命令提示符、检查日志、确保依赖完整。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 1387

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ STL与Boost库选型指南:资深工程师的实战经验总结

在C++开发中,标准模板库(STL)和Boost库是两大核心工具集,理解它们的定位差异对项目技术选型至关重要。STL作为C++标准的一部分,提供了容器、算法和迭代器等基础组件,具有极佳的可移植性和性能,是构建可靠软件的首选。其设计遵循最小化和正交化原则,确保了代码的稳定性和跨平台一致性。相比之下,Boost库则扮演着前沿试验场的角色,提供了智能指针、文件系统操作和异步I/O等扩展功能,许多特性后来被纳入C++标准。从工程实践角度看,合理选择工具能显著提升开发效率和代码质量。例如,在内存管理场景中,C++11

weixin_33910385的博客 374

Boost库在现代C++开发中的5个高效应用场景

本文深入探讨了Boost库在现代C++开发中的五个高效应用场景,包括字符串处理、多线程编程、网络编程、元编程与类型处理以及文件系统与跨平台开发。通过具体代码示例和性能对比,展示了Boost如何超越标准库,为C++开发者提供更强大、更灵活的工具箱,从而提升开发效率和代码质量。

lake5的博客 972

C++之STL和Boost【转】

最近一年我电话面试了数十位 C++ 应聘者,惯用的暖场问题是“工作中使用过 STL 的哪些组件?使用过 Boost 的哪些组件?”。得到的答案大多集中在 vector、map 和 shared_ptr。如果对方是在校学生,我一般会问问 vector 或 map 的内部实现、各种操作的复杂度以及...

chijidun0185的博客 209
上一篇: 在Win7 x64中使用GNUstep和MinGW编写Objective-C的代码
下一篇: Android屏幕兼容性
sonikk
博客等级 码龄15年 68粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值