C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式相关的知识,希望对你有一定的参考价值。

1. 正则表达式 (regular expression)

一种描述字符序列的方法

组件解释
regex表示一个正则表达式的类
regex_match将一个字符序列与一个正则表达式匹配
regex_search寻找第一个与正则表达式匹配的子序列
regex_replace使用给定格式替换一个正则表达式
sregex_iterator迭代器适配器,调用regex_searcg来遍历一个string中所有匹配的子串
smatch容器类,保存在string中搜索的结果
ssub_matchstring中匹配的子表达式的结果

regex_match和regex_search的参数:
操作会返回bool值,指出是否找到匹配。

操作解释
(seq, m, r, mft)在字符序列seq中查找regex对象r中的正则表达式。seq可以是一个string、标识范围的一对迭代器、一个指向空字符结尾的字符数组的指针。
(seq, r, mft)m是一个match对象,用来保存匹配结果的相关细节。m和seq必须具有兼容的类型。mft是一个可选的regex_constants::match_flag_type值。

1.1 例子

查找违反众所周知的拼写规则 “i除非在 c 之后,否则必须在 e 之前” 的单词

//查找不在字符c之后的字符串ei
string pattern("[^c]ei");
//包含pattern的整个单词
pattern = "[[:alpha:]]*" + pattern + "[[:alpha:]]*";
regex r(pattern);    //构造一个有查找模式的regex
smatch results;    //定义一个对象保存搜索结果
//定义一个string保存与模式匹配和不匹配的文本
string test_str = "receipt freind thief receive";
//用r在test_str中查找与pattern匹配的子串
if (regex_search(test_str, results, r))    //如果有匹配子串
    cout << results.str() << endl;    //打印匹配的单词

输出结果为:

freind

以上是关于C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白

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

C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式

C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 返回多个值

C++ Primer 5th笔记(chap 17 标准库特殊设施)控制输入格式

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