## C++ 正则表达式语法### 简介C++11 引入了正则表达式库 `
普通字符:
匹配自身,例如 `a` 匹配字母 "a", `1` 匹配数字 "1"。
特殊字符 (元字符):
拥有特殊含义,例如 `.` 匹配除换行符以外的任意字符, `
` 表示重复前面的字符或子表达式零次或多次。常见的元字符包括:
`.` : 匹配除换行符以外的任意字符
`^` : 匹配字符串的开头
`$` : 匹配字符串的结尾
`
` : 匹配前面的字符或子表达式零次或多次
`+` : 匹配前面的字符或子表达式一次或多次
`?` : 匹配前面的字符或子表达式零次或一次
`{n}` : 匹配前面的字符或子表达式恰好 n 次
`{n,}` : 匹配前面的字符或子表达式至少 n 次
`{n,m}` : 匹配前面的字符或子表达式 n 到 m 次
`|` : 或运算符,匹配左右任意一个表达式
`(...)` : 捕获组,用于捕获匹配的子字符串
`[...]` : 字符类,匹配方括号内任意一个字符
`[^...]` : 否定字符类,匹配不在方括号内任意一个字符
`\` : 转义字符,用于转义特殊字符或表示特殊序列### 字符类字符类用于匹配特定集合中的字符。
`[abc]` : 匹配 a、b 或 c
`[a-z]` : 匹配所有小写字母
`[A-Z]` : 匹配所有大写字母
`[0-9]` : 匹配所有数字
`[a-zA-Z0-9]` : 匹配所有字母和数字
`[^0-9]` : 匹配非数字字符### 量词量词用于指定前面的字符或子表达式出现的次数。
`
` : 零次或多次
`+` : 一次或多次
`?` : 零次或一次
`{n}` : 恰好 n 次
`{n,}` : 至少 n 次
`{n,m}` : n 到 m 次### 捕获组捕获组使用括号 `(...)` 来捕获匹配的子字符串。可以使用 `std::smatch` 对象的 `str(n)` 方法访问第 n 个捕获组的内容,其中 n 从 1 开始。### 标志C++ 正则表达式支持多种标志,用于控制匹配行为。可以使用按位或运算符 `|` 组合多个标志。
`std::regex::icase` : 忽略大小写
`std::regex::nosubs` : 不存储匹配结果
`std::regex::optimize` : 编译时优化正则表达式
`std::regex::ECMAScript` : 使用 ECMAScript 语法
`std::regex::basic` : 使用基本的 POSIX 语法
`std::regex::extended` : 使用扩展的 POSIX 语法
`std::regex::awk` : 使用 awk 语法
`std::regex::grep` : 使用 grep 语法
`std::regex::egrep` : 使用 egrep 语法### 使用示例```c++
#include
C++ 正则表达式语法
简介C++11 引入了正则表达式库 `
基本语法C++ 正则表达式使用类似 Perl 的语法。一个简单的正则表达式由普通字符和特殊字符组成。* **普通字符:** 匹配自身,例如 `a` 匹配字母 "a", `1` 匹配数字 "1"。 * **特殊字符 (元字符):** 拥有特殊含义,例如 `.` 匹配除换行符以外的任意字符, `*` 表示重复前面的字符或子表达式零次或多次。常见的元字符包括:* `.` : 匹配除换行符以外的任意字符 * `^` : 匹配字符串的开头 * `$` : 匹配字符串的结尾 * `*` : 匹配前面的字符或子表达式零次或多次 * `+` : 匹配前面的字符或子表达式一次或多次 * `?` : 匹配前面的字符或子表达式零次或一次 * `{n}` : 匹配前面的字符或子表达式恰好 n 次 * `{n,}` : 匹配前面的字符或子表达式至少 n 次 * `{n,m}` : 匹配前面的字符或子表达式 n 到 m 次 * `|` : 或运算符,匹配左右任意一个表达式 * `(...)` : 捕获组,用于捕获匹配的子字符串 * `[...]` : 字符类,匹配方括号内任意一个字符 * `[^...]` : 否定字符类,匹配不在方括号内任意一个字符 * `\` : 转义字符,用于转义特殊字符或表示特殊序列
字符类字符类用于匹配特定集合中的字符。* `[abc]` : 匹配 a、b 或 c * `[a-z]` : 匹配所有小写字母 * `[A-Z]` : 匹配所有大写字母 * `[0-9]` : 匹配所有数字 * `[a-zA-Z0-9]` : 匹配所有字母和数字 * `[^0-9]` : 匹配非数字字符
量词量词用于指定前面的字符或子表达式出现的次数。* `*` : 零次或多次 * `+` : 一次或多次 * `?` : 零次或一次 * `{n}` : 恰好 n 次 * `{n,}` : 至少 n 次 * `{n,m}` : n 到 m 次
捕获组捕获组使用括号 `(...)` 来捕获匹配的子字符串。可以使用 `std::smatch` 对象的 `str(n)` 方法访问第 n 个捕获组的内容,其中 n 从 1 开始。
标志C++ 正则表达式支持多种标志,用于控制匹配行为。可以使用按位或运算符 `|` 组合多个标志。* `std::regex::icase` : 忽略大小写 * `std::regex::nosubs` : 不存储匹配结果 * `std::regex::optimize` : 编译时优化正则表达式 * `std::regex::ECMAScript` : 使用 ECMAScript 语法 * `std::regex::basic` : 使用基本的 POSIX 语法 * `std::regex::extended` : 使用扩展的 POSIX 语法 * `std::regex::awk` : 使用 awk 语法 * `std::regex::grep` : 使用 grep 语法 * `std::regex::egrep` : 使用 egrep 语法
使用示例```c++
include
include
include
总结C++ 正则表达式库 `