terminate called after throwing an instance of 'std::regex_error'(C++11)
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=050)
本文发布于 2017-12-29 14:31:11,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=050)
环境说明
无
前言
无
std::regex_error
最近修改一个程序,增加了一些功能,为了方便移植,要用到C++11的正则表达式(正则用起来顺手)。这里我就想说明的是:TMD,GCC 语法实现了,库没有写完。。。QAQ,WC。什么不说了。
目标:得到url(类似http://1.1.1.1:9001/group1/M00/00/37/wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz)中的文件名(wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz)。
/*file_path = 类似http://1.1.1.1:9001/group1/M00/00/37/wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz
*/
std::string Target_FileName;
std::string pattern(".*/([^/]+\\.[a-zA-Z]+)");
std::regex re(pattern);
std::match_results<std::string::const_iterator> result;
//std::smatch == std::match_results<std::string::const_iterator>
if ( !std::regex_match(file_path,result,re) ){
yUpgradeLog_Msg("std::regex_match false.");
return -1;
}
yUpgradeLog_Msg(result.size());
Target_FileName = result[1];
得到了下面如图的问题:
于是我去网上找答案,问题出在我构造正则表达式的时候。也就是这句中,std::string pattern(".*/([^/]+\.[a-zA-Z]+)");于是我重新修改了表达式N次还是不行,没有办法了,只有去网络海洋去在瞧一瞧看一看。
最终,我看到了一个消息,给了我一点提示,文中说,可能和GCC版本有关,如果要正常使用C++11的正则表达式,需要注意GCC版本必须为4.9+,WC,TMD,赶紧去看看GCC版本。
然后赶紧使用5.4的gcc再试试如下的代码,过了。我真是无F*uck说。
#include <regex>
#include <iostream>
int main(){
std::string pattern(".*/([^/]+\\.[a-zA-Z]+)");
std::regex re(pattern);
std::match_results<std::string::const_iterator> result;
//std::smatch == std::match_results<std::string::const_iterator>
std::string t = "http://1.1.1.1:9001/group1/M00/00/37/wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz";
if ( !std::regex_match(t,result,re) ){
std::cout<<"std::regex_match false.";
return -1;
}
std::cout<<"result is "<<result[1];
return 0;
}
最后在说一下不用正则怎么实现的吧!(其实,下面的还要简单点,感觉自己 大写的 ZZ 了,不过涨姿势了。)
file_path="http://1.1.1.1:9001/group1/M00/00/37/wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz";
file_path.substr(file_path.rfind("/")+1);
后记
无
参考文献
- 无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
terminate called after throwing an instance of 'std::regex_error'(C++11)的更多相关文章
- 解决程序出现“terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped)”的问题
最近跑程序时出现了这么一个问题: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_al ...
- terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr
运行时报错: terminate called after throwing an instance of 'std::out_of_range'what(): basic_string::subs ...
- terminate called after throwing an instance of 'std::bad_alloc'
这个错误,网上搜索到的资料大多是指向内存不足或者内存碎片问题,如下链接 http://bbs.csdn.net/topics/330000462 http://stackoverflow.com/qu ...
- OC 实例变量(Instance Var)和成员变量(member var)区别
摘要: Objective-C 引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方 ...
- STL——空间的配置和释放std::alloc(第一级配置器和第二级配置器)
1 空间的配置和释放,std::alloc 对象构造前的空间配置和对象析构后的空间释放,由<stl_alloc.h>负责,SGI对此的设计哲学如下: 向system heap要求空间 考虑 ...
- C++11并发——多线程std::mutex (二)
https://www.cnblogs.com/haippy/p/3237213.html Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mute ...
- 第12课 std::bind和std::function(3)_std::function可调用对象包装器
1. std::function (1)首先是一个类模板,用于包装可调用对象.可以容纳除了类成员(函数)指针之外的所有可调用对象. (2)可以将普通函数,lambda表达式和函数对象类统一起来.尽管它 ...
- 第11课 std::bind和std::function(2)_std::bind绑定器
1. 温故知新:std::bind1st和std::bind2nd (1)bind1st.bind2nd首先它们都是函数模板,用于将参数绑定到可调用对象(如函数.仿函数等)的第1个或第2个参数上. ( ...
- 第10课 std::bind和std::function(1)_可调用对象
1. 几种可调用对象(Callable Objects) (1)普通函数指针或类成员的函数指针 (2)具有operator()成员函数的类对象(仿函数).如c++11中的std::function类模 ...
- Android如何打印std::cout/printf(重定向stdout)
Android应用调试时没有stdout和stderr的输出,网上看到的解释都是下面这个样子: ################################################# An ...
随机推荐
- 18. 默认堆/创建堆--《Windows核心编程》
Windows 提供了以下三种机制来对内存进行操控虚拟内存:最适合用来管理大量对象数组或者大型数据结构内存映射文件:最适合用来管理大型数据流(通常是文件),以及在同一机器上运行的多个进程之间的共享数据 ...
- .NET 云原生架构师训练营(模块二 基础巩固 Host)--学习笔记
2.2.4 核心模块--Host 什么是 Host Host 的默认配置做了哪些事情 框架提供的服务 HostedService 后台服务 ASP.NET Core Web 主机:https://do ...
- JS 从零手写一个深拷贝(进阶篇)
壹 ❀ 引 在深拷贝与浅拷贝的区别,实现深拷贝的几种方法一文中,我们阐述了深浅拷贝的概念与区别,普及了部分具有迷惑性的浅拷贝api.当然,我们也实现了乞丐版的深拷贝方法,能解决部分拷贝场景,虽然它仍有 ...
- 【framework】TaskStack简介
1 前言 TaskStack 用于管理 app,一般一个应用程序对应一个 TaskStack,其父容器为 TaskStackContainers(DisplayContent 的子容器),子容器为 ...
- 苹果AppleMacOs最新Sonoma系统本地训练和推理GPT-SoVITS模型实践
GPT-SoVITS是少有的可以在MacOs系统下训练和推理的TTS项目,虽然在效率上没有办法和N卡设备相提并论,但终归是开发者在MacOs系统构建基于M系列芯片AI生态的第一步. 环境搭建 首先要确 ...
- python利用random模块随机生成MAC地址和IP地址
import random def randomMac(): macstring = "0123456789abcdef"*12 macstringlist=random. ...
- sliver生成木马.sh
生成sliver木马多个步骤合成一个sh #!/bin/bash # date: 20230222 host_ip=$1 WORK_DIR=/opt/work rm -rf /root/.sliver ...
- win32 - GDI+ 高斯模糊的使用
虽然标题中标有GDI+,但其实真正实施的时候并没有用到. 不过GDI+的相关文档有一些关于高斯模糊的api说明,见下面链接: Blur class (gdipluseffects.h) 使用Bl ...
- win32 - 写入安全日志(AuthzRegisterSecurityEventSource和AuthzReportSecurityEvent)
微软文档介绍说, 安全日志在其他两个重要方面与其他日志不同.首先,在默认配置中,它受到强大的访问控制列表(ACL)和特权检查的保护,这将可以读取其内容的个人的范围限制为本地系统,管理员和安全特权的持有 ...
- 【Android 抓包对抗】代理检查绕过
1. 安装apk,点进去发现一点就挂 2. apk 拖入到jadx中观察,发现多出检查,一旦满足条件就会退出 .... if (((ConnectivityManager) getSystemServ ...