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_match | string中匹配的子表达式的结果 |
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 返回多个值