Lambda表达式(Lambda Expressions):
Lambda表达式(Lambda Expressions):匿名函数的表示方法,用于在代码中定义临时函数。提供了一种简洁的方式来定义和使用函数对象或回调函数。
[capture](parameters) -> return_type { body }
- capture:指定哪些外部变量被捕获到Lambda中。
- parameters:Lambda接受的参数。
- return_type:Lambda的返回类型(可选)。
- body:Lambda的主体,即要执行的代码。
RE(Regular Expressions)正则表达式库:std::regex标准库
RE库:提供对正则表达式的支持,用于在字符串中执行复杂的模式匹配捕获和替换操作。
regex类:
- regex类初始化:regex r (re)| regex r (re, f)
- re:是正则表达式,可以为string,范围迭代器对……
- f:标志, 例如:regex::icase忽略大小写
- r = r1 | r.assign(re, f) 赋值操作
- r.flags()返回标志
regex_error
- 正则表达式可以理解为一种简单的编程语言,所以也会出现语法错误,从而抛出regex_error异常
- 可以用try{}catch{}捕获异常:抛出code对应错误类型数值编码,可以清除发生了什么语法错误
输入序列
- 可以接受string ,wstring, const char* , const wchar*
- 但是注意:RE库类型必须和输入序列类型匹配:例如smatch & ssub_match || cmatch & csub_match,否则会编译失败
regex_match & sregex_search
- 将整个输入序列与正则表达式匹配 | 搜索首个与正则表达式匹配的子序列,返回bool值
- (seq(输入序列),m(match对象保存匹配结果),r(regex对象),mft(可选))
match & sub_match
- match 容器类:
- 存储搜索结果
- match对象的操作:
- m.str(n)返回第n个与子表达式匹配的字符,
- m.length(n)返回第n个与子表达式匹配的字符大小,
- m.prefix()返回当前匹配之前的字符,
- sub_match子表达式:
- 正则表达式语法中用()代表一个子表达式,一个match对象包含多个子表达式,
- 对match对象:match[0]表示整个匹配,match[1]……表示第一个匹配的子表达式
- sub_match对象的操作:
- matched返回bool值,验证是否与子表达式匹配,返回true表示匹配
- match[n].str()返回与第n个子表达式,匹配的字符串
regex_iterator
- 寻找所有的匹配
- 初始化:regex_iterator it (b迭代器起始范围, e迭代器结束范围, re 正则表达式),会定位到第一个与re匹配的位置
- it++: 递增迭代器
- *it返回match对象的引用,it->访问it指针指向的match对象的成员
regex_replace
- regex_replace(seq输入序列,re正则表达式,fmt格式化字符串,mft)遍历seq,查找与re对象匹配的子串,用fmt生成格式化输出
- 格式化字符串$后接索引号,表示第几个子表达式sub_match
mft:std::regex_constants::match_flag_type
- 在替换过程中控制匹配或格式的标签
正则表达式(regular expression)语法:ECMAScript:
正则表达式(regular expression):是一种用于描述和匹配字符串和文本数据的工具。提供了一个灵活的方式来描述和匹配字符串模式。
\ 反斜杠:表示后一个字符不代表特殊含义,通常有\ 或 括号的前面需要再加\去掉\ 或括号的含义,例如\\d
() 分组为子表达式
匹配单个字符
普通字符 | 包括字母、数字和一些符号 |
. | 匹配任意单个字符 |
\d | 匹配数字 \d{n}匹配n个数字序列 |
匹配多个字符
* | 匹配前面的字符出现零次或多次 |
+ | 匹配前面的字符出现一次或多次 |
? | 匹配前面的字符出现零次或一次 |
{m, n} | 匹配前面的字符出现m到n次 |
锚字符
^…… | 匹配以……字符串的起始位置 |
……$ | 匹配以……字符串的结束位置 |
字符类
[A-Z] [a-z] [0-9] | 方括号内包含要匹配的字符集合,匹配任何一个大写字母 | 小写字母 | 任何一个数字字符 |
脱字符^ | 匹配表示排除字符类的字符 |
预定义字符类
s | 匹配任何空白字符 |
空白字符包括的内容:
- 空格(Space):例如
' '
。 - 制表符(Tab):例如
'\t'
。 - 换行符(Newline):例如
'\n'
。 - 回车符(Carriage Return):例如
'\r'
。 - 垂直制表符(Vertical Tab):例如
'\v'
。 - 换页符(Form Feed):例如
'\f'