首页 > 编程语言 >【C++学习笔记】C++ 正则表达式不完全支持零断宽言

【C++学习笔记】C++ 正则表达式不完全支持零断宽言

时间:2023-05-11 12:24:07浏览次数:40  
标签:regex END iterator pos C++ 零断 sregex 宽言

最近需要解析配置文件,遇到从@START DATA @END中提取DATA的正则,按照C#的操作,直接(?<=@START)[\W\w]?(?=@END),就能提取的,可是在C++中,regex e("(?<=@START)[\W\w]?(?=@END)") 报错了,找了很多说法,最终结论:支持先行断言,不支持后行断言 即:(?<=@START) 和(?<!@START)。
好在C++支持子匹配项,所以变化一下:@START([\W\w]*?)(?=@END)
上代码:

regex e("@START([\W\w]*?)(?=@END)");
string str="@START68@END";
sregex_token_iterator pos(str.cbegin(),str.cend(),e,1);//-1 显示没匹配的字符   0显示匹配的全部字符  1、2、3 显示子匹配
sregex_token_iterator end;
for(;pos!=end;pos++)
{
  string result=*pos;
}
//就拿到68了

//另外还有sregex_iterator  regex_search regex_match 等方法 各有用处

标签:regex,END,iterator,pos,C++,零断,sregex,宽言
From: https://www.cnblogs.com/kafeibuhuizui/p/17390687.html

相关文章

  • C/C++交通咨询系统设计哈夫曼编码问题[2023-05-11]
    C/C++交通咨询系统设计哈夫曼编码问题[2023-05-11]题目三、交通咨询系统设计最短路径问题设计要求及分析:设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费、最少时间等问题。对于不同咨询要求,可输出城市间的路程、所需时间......
  • c++自定义工具类的定义和使用
    classlog_work{private:intlog_id_=1;intlog_level_;qnx_slog2()=default;virtual~qnx_slog2(){uninit();}public:inlinestaticlog_work&get_log(){staticqnx_slog2slog2_instance;returnslog2_instance;}......
  • c++模版多参数的递归用法--自定义log
    #include<iostream>#include<sstream>#include<string>#include<tuple>#include<type_traits>template<typenameT>voidprint_impl(std::ostringstream&os,constchar*format,T&&arg){while(*form......
  • C++ - 崩溃定位用dump和pdb文件
    目的利用dump和pdb文件来快速定位程序崩溃的地方步骤1、写一个简单的崩溃程序sample.cpp1classTest{2public:3voidsay(){4inta=0;5intb=10/a;6}7};89int_tmain(intargc,_TCHAR*argv[])10{11Testt;......
  • 真机调试可以正常安装,但是不能正常运行,出现错误:couldn‘t find “libc++_shared.so“
    在迁移代码的时候,发现代码可以在模拟器上运行,但是无法在真机上面运行,最后经过挨个的排查,最终发现是ndk的问题。在app的build.gradle中的ndk缺少了匹配的实体机类型,然后加了一下'x86','armeabi-v7a','armeabi','armabi-v7a','x86_64','arm64-v8a','mips','mips64......
  • 总结:C++引用(Reference)
    声明:资料整理自网络资源,未能全部注明引用来源,如有侵权请联系。一、基本概念引用(Reference)是C++相对于C语言的又一个扩充。引用变量是一个别名,即某个已存在变量的另一个名字。声明方法:类型标识符&引用名=目标变量名;inta;//定义变量aint&b=a;//定义引用b,a和b表......
  • 编程打卡:C++语言程序设计
    //Node.h#ifndefNODE_H#defineNODE_H//类模板的定义template<classT>classNode{private: Node<T>*next; //指向后继结点的指针public: Tdata; //数据域 Node(constT&data,Node<T>*next=0);//构造函数 voidinsertAfter(Node<T>*p); //......
  • c++打卡训练
    自守数(半成品,指没写出来,双倍给明天)流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ longinti,m; intj,n,k,a=1; for(i=0;i<=100000;i++){ n=i; m=i*i; for(j=0;n=0;j++){ n/=10; for(k=j;k>=0;k--){ a=a+a*10; if(m%a==i){ printf......
  • C++
    学生类的析构与构造#include<iostream>#include<string.h>usingnamespacestd;classStudent{public:Student(int_num,string_name,char_sex){num=_num;name=_name;sex=_sex;cout<<"Constructorcalled."......
  • C++ 类和对象: 初始化列表
    1.回顾构造函数构造函数是6个默认的成员函数之一,完成对象初始化的工作而在构造函数中,有两种初始化对象的方式,初始化列表和函数体内赋值首先来回顾一下用函数体内赋值方法进行初始化#include<iostream>usingnamespacestd;classDate{public: Date(intyear=1,......