c++ 正则表达式

首页 / 图说知识 / 科技 | 2022-06-25 12:45:05 点击:0

c++ 中如何处理正则表达式呢?我们一起了解一下吧!

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

在c语言中,用regcomp、regexec、regfree 和regerror处理正则表达式。处理正则表达式分三步:

1、编译正则表达式,regcomp;

2、匹配正则表达式,regexec;

3、**正则表达式,regfree。

下边是对三个函数的详细解释

1、int regcomp (regex_t *compiled, const char *pattern, int cflags)

这个函数把指定的正则表达式pattern编译成一种特定的数据格式compiled,这样可以使匹配更有效。函数regexec 会使用这个数据在目标文本串中进行模式匹配。执行成功返回0。  

参数说明:

①regex_t 是一个结构体数据类型,用来存放编译后的正则表达式,它的成员re_nsub 用来存储正则表达式中的子正则表达式的个数,子正则表达式就是用圆括号包起来的部分表达式。

②pattern 是指向我们写好的正则表达式的指针。

③cflags 有如下4个值或者是它们或运算(|)后的值:

REG_EXTENDED 以功能更加强大的扩展正则表达式的方式进行匹配。

REG_ICASE 匹配字母时忽略大小写。

REG_NOSUB 不用存储匹配后的结果。

REG_NEWLINE 识别换行符,这样'$'就可以从行尾开始匹配,'^'就可以从行的开头开始匹配。

2. int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)

当我们编译好正则表达式后,就可以用regexec 匹配我们的目标文本串了,如果在编译正则表达式的时候没有指定cflags的参数为REG_NEWLINE,则默认情况下是忽略换行符的,也就是把整个文本串当作一个字符串处理。执行成功返回0。

regmatch_t 是一个结构体数据类型,在regex.h中定义:             

typedef struct

{

   regoff_t rm_so;

   regoff_t rm_eo;

} regmatch_t;

成员rm_so 存放匹配文本串在目标串中的开始位置,rm_eo 存放结束位置。通常我们以数组的形式定义一组这样的结构。因为往往我们的正则表达式中还包含子正则表达式。数组0单元存放主正则表达式位置,后边的单元依次存放子正则表达式位置。

参数说明:

①compiled 是已经用regcomp函数编译好的正则表达式。

②string 是目标文本串。

③nmatch 是regmatch_t结构体数组的长度。

④matchptr regmatch_t类型的结构体数组,存放匹配文本串的位置信息。

⑤eflags 有两个值

REG_NOTBOL 按我的理解是如果指定了这个值,那么'^'就不会从我们的目标串开始匹配。总之我到现在还不是很明白这个参数的意义;

REG_NOTEOL 和上边那个作用差不多,不过这个指定结束end of line。

3. void regfree (regex_t *compiled)

当我们使用完编译好的正则表达式后,或者要重新编译其他正则表达式的时候,我们可以用这个函数清空compiled指向的regex_t结构体的内容,请记住,如果是重新编译的话,一定要先清空regex_t结构体。

4. size_t regerror (int errcode, regex_t *compiled, char *buffer, size_t length)

当执行regcomp 或者regexec 产生错误的时候,就可以调用这个函数而返回一个包含错误信息的字符串。

参数说明:

①errcode 是由regcomp 和 regexec 函数返回的错误代号。

②compiled 是已经用regcomp函数编译好的正则表达式,这个值可以为NULL。

③buffer 指向用来存放错误信息的字符串的内存空间。

④length 指明buffer的长度,如果这个错误信息的长度大于这个值,则regerror 函数会自动截断超出的字符串,但他仍然会返回完整的字符串的长度。所以我们可以用如下的方法先得到错误字符串的长度。

 size_t length = regerror (errcode, compiled, NULL, 0);

关于c++ 中处理正则表达式的方法,我们就分享到这啦!


本站声明:本站部分文章来自网络,由用户上传分享,如若内容侵犯了您的合法权益,可联系我们进行处理。文章仅供大家学习与参考,不**本站立场。

评论(0)
*评论只允许汉字和全角中文标点符号。 ? ! ,等
相关标签

推荐相关
相关图片
标签索引

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

文章索引

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

关注用户
QQ皮肤 | 唯美图片 | 闪图 | 女生头像 | 女生图片 | 文字图片 | 爱情图片 | 素材图片 | 非主流图片 | 伤感图片 | 游戏图片 | QQ表情 | 流光字 | qq相册封面拼图 | 小清新图片 | lomo图片 | 美女 | 搞笑图片 | 美文 | 卡通图片 | 原创投稿 | 植物图片 | 动物图片 | 风景图片 | 二次元 | 古风图片 | 美食图片 | 手工制作 | 动漫图片 | 手工折纸 | 废物利用 | 儿童手工 | 可爱图片 | 插画 | 欧美图片 | 头像 | 男生头像 | 情侣头像 | 欧美头像 | 卡通头像 | qq说说 | 伤感说说 | 爱情说说 | 搞笑说说 | 心情说说 | 经典说说 | 图片说说 | 纹身图案 | 可爱头像 | 娱乐圈 | 明星图片 | 娱乐八卦 | 影视剧照 | 摄影图片 | 儿童图片 | 女孩图片 | 男孩图片 | 宝宝图片 | cosplay图片 | 图解小知识 | 美女写真 | 性感美女 | 美女校花 | 游戏美女 | 韩国美女 | 清纯美女 | 内衣美女 | 制服美女 | **** | 欧美美女 | 美女模特 | 美女私房 | 电脑壁纸 | 影视壁纸 | 明星壁纸 | 美女壁纸 | 节日壁纸 | 游戏壁纸 | 卡通动漫 | 美食壁纸 | 风景壁纸 | 动物壁纸 | 设计创意 | 汽车壁纸 | 日历壁纸 | 植物壁纸 | 广告壁纸 | 家居壁纸 | 军事壁纸 | 体育壁纸 | 风格壁纸 | 手机壁纸 | 动漫 | 美女 | 明星 | 游戏 | 影视 | 汽车 | 风景 | 唯美 | 植物 | 动物 | 可爱 | 节日 | 卡通 | 创意 | 非主流 | 苹果 | 搞笑 | 爱情 | 动态 | 风格 | 体育 | 美食 | 萌表情 | 文案 范文 曲谱大全 | 美声曲谱 | 合唱曲谱 | 少儿曲谱 | 外国曲谱 | 戏曲曲谱 | 民歌曲谱 | 通俗曲谱 | 器乐乐谱 | 原创曲谱 | 谱友园地 | 个人曲谱 | 吉他乐谱 | 电子琴谱 | 钢琴乐谱 | 胡琴乐谱 | 葫芦丝等 | 琵琶乐谱 | 其他乐谱 | 笛箫乐谱 | 古筝古琴 | 铜管乐谱 | 提琴乐谱 | 长笛乐谱 | 手风琴谱 | 萨克斯谱 | 口琴乐谱 | 扬琴乐谱 | 图说养生 | 运动养生 | 春季养生 | 女性健康 | 夏季养生 | 疾病预防 | 秋季养生 | 养生小妙招 | 减肥瘦身 | 冬季养生 | 母婴保健 | 24节气养生 | 生活常识 | 孕妇养生 | 小偏方 | 幼儿养生 | 美容护肤 | 老人养生 | 中医养生 | 饮食指南 | 青少年养生 | 饮食指南 | 女性养生 | 男性养生 | 白领养生 | 男性健康 | 两性保健 | 生活禁忌 | 穴位养生 | 两性健康 | 风景头像 | 心理健康 | 养生资讯 | 评测 | 图说花草 | 养花知识 | 花卉诊疗 | 植物百科 | 图说娱乐 | 明星 | 影视 | 综艺 | 八卦 | 爆料 | 花边 | 趣事 | 日韩 | 剧情 | 图说女性 | 时尚美妆 | 整容知识 | 丰胸** | 美体知识 | 时尚穿搭 | 化妆技巧 | 发型设计 | 护肤知识 | 美**选 | 保养技巧 | 时尚包包 | 女士内衣 | 运动健身 | 图说社会 | 旅游 | 百态 | 创业 | 职场 | 军事 | 情感 | 健康 | 美食 | 问答 | 图说知识 | 生活 | 资讯 | 影视 | 女性 | 旅游 | 汽车 | 吃喝 | 科技 | 教学 | 食谱 | 特产 | 功效与作用 | 美食 | | 烘焙 | 手机数码 | win7 | word | Excel | 电脑操作 | Photoshop | win10 | PowerPoint | 数码 | 教育 | 手抄报 | 简笔画 | 简笔画大全 | 故事 | 折纸 | 节日节气 | 历史 | 优品 | 家居知识 | 家居 | 母婴 | 星座 | 街拍 | 图说排名 | 生活 | 旅游 | 娱乐 | 城市 | ** | 教育 | 科技 | 行业 | 军事 | 人物 | 体育 | 图说亲子 | 备孕 | 孕期 | 分娩 | 产后 | 新生儿 | 幼儿 | 婴儿 | 早教 | 儿童 | 用品 | 图说发型 | 女生 | 波波头 | 丸子头 | 花苞头 | 男生 | 编发 | 长发 | 圆脸 | 大脸 | 马尾辫 | 蜈蚣辫 | 麻花辫 | 梨花头 | 盘发 | 卷发 | 直发 | 短发 | 刘海 | 非主流 | 夏季 | 发髻 | 纹理烫 | 荷叶头 | 韩式 | 胖脸 | 娃娃脸 | 瓜子脸 | 长脸 | 方脸 | 欧美头像 | 个性头像 | 唯美头像 | 文字头像 | 带字头像 | 伤感头像 | 黑白头像 | 霸气头像 | 超拽头像 | 颓废头像 | 清新头像 | 意境头像 | 背影头像 | 抽烟头像 | 搞笑头像 | 小孩头像 | 游戏头像 | 动物头像 | 汽车头像 | 超萌头像 | 创意头像 | 静物头像 | 非主流头 | 星座头像 | 植物头像 | 节日头像 | 另类头像 | 手绘头像 | 纹身头像 | 明星头像 | 人物头像 | 建筑头像 | 恐怖头像 | 古风头像 | 励志头像 | 风水头像 | 姓氏头像 | 动态头像 | 群头像 | 家用电器 | 手机数码 | 护肤美妆 | 服装饰品 | 食品特产 | 母婴用品 | 时尚生活 | 探索发现 | 科学探寻 | 未解之谜 | 世界之最 | 历史趣闻 | 宇宙探索 | 猎奇八卦 | 世界十大 | 奇异生物 | 图说理财