c字符串截取一部分字符串_C++巧用正则一次性截取多段子字符串

字符串截取我想每个程序猿不管是新手还是老手都很熟悉了,像C++里的substr()方法就十分好用,但是这个方法需要知道你要截取位置的起始位置和需要截取的字符串长度,又或者需要知道截取的起始位置和停止位置。

背景

上面说的substr方法在截取不确定长度字符串和一次性截取多段子字符串时用起来不是很方便。小编就遇到这样的问题,下面来详细讲讲:

现在有一串格式固定但是长度不确定的字符串,例如:set(“mill_ed.8.f_steptools.1.st_profile”, “face”, 50.800);这样一个字符串,他的结构是有规律的,都是由“.”分隔。

dbc91fafaa06d33f84c6eb18fb2191e4.png

如上,我需要截取标红色的部分,其他部分都是固定的,按照常规方法我是可以先用“.”将字符串分割,然后再有部分的再分别去截取。但是我嫌麻烦,于是我就想到了正则表达式,想着能不能用正则去将我需要的字符匹配出来。

实现

直接上代码吧:

28e33b5d11062a0143c1ae44683fcdb0.png

先看下运行结果吧:

498f5b2116547a614253352d7bd07ee4.png

怎么样一次性将所有需要的子字符串全部截取出来了,是不是很方便快捷呢?(大家注意一下这里,result容器内的第一项是匹配成功的整字符串,后面的才是小括号中()匹配条件的子字符串)。

详解

接下来我们来了解一下C++正则的一些基本用法吧。我们在用C++的正则的时候需要引入regex库#include,这个库里面有哪些东西呢?

93e0527e4238a5a73e9c59e0a904e2dc.png

这里的函数和类型我就不讲了,主要用到regex_match方法。然后将目标字符串与你得正则表达式去匹配,得到的匹配结果全部在smatch类型的容器中。其中最终要的主要是regex正则表达式

regex pattern = regex("set(".*).(d+).(.*).(d+).st_profile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值