栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch

1. smatch允许获得匹配的上下文

匹配类型有两个名为 prefix 和 suffix的成员, 分别返回表示输入序列中当前匹配之前和之后部分的 SSub_matCh 对象。

一个ssub_match 对象有两个名为 str 和 length 的成员, 分别返回匹配的 string 和该string 的大小

// 显示出匹配单词的上下文
// 循环头与之前一样
for (sregex_iterator it(file.begin(), file.end(), r), end_it; it != end_it; ++it)
{
    auto pos = it->prefix().length(); // 前缀的大小
    pos = pos > 40 ? pos - 40 : 0; // 我们想要最多40个字符
    cout << it->prefix().str().substr(pos) // 前缀的最后一部分
        << " >>> " << it->str() << " <<suffix().str().substr(0, 40) // 后缀的第一部分
        << endl;
}

这些操作也适用于cmatch、wsmatch、wcmatch和对应的csub_match、wssub_match和wcsub_match

match操作解释
m.ready()如果已经通过调用regex_search或regex_match设置了m,则返回true;否则返回false。如果ready返回false,则对m进行操作是未定义的
m.size()如果匹配失败,则返回0;否则返回最近一次匹配的正则表达式中子表达式的数目
m.empty()若m.size()为0,则返回true
m.prefix()一个ssub_match对象,表示当前匹配之前的序列
m.suffix()一个ssub_match对象,表示当前匹配之后的部分
——在接受一个索引的操作中,n的默认值为0且必须小于m.size()。
——第一个子匹配(索引为0)表示整个匹配。
m.length(n)第n个匹配的子表达式的大小
m.position(n)第n个子表达式据序列开始的距离
m.str(n)第n个子表达式匹配的string
m[n]对应第n个子表达式的ssub_match对象
m.begin(), m.end() or m.cbegin(), m.cend()表示m中sub_match元素范围的迭代器。与往常一样,cbegin()和cend()返回const_iterator
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429471.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号