在 C++ 中,可以使用 头文件提供的正则表达式库来对特定形式的字符串进行匹配操作。
普通字符:
a 会匹配字符 a。转义字符:
\:用于转义特殊字符,例如 \\ 匹配 \。.:匹配除换行符外的任意字符。字符类:
[abc]:匹配字符 a, b, 或 c 中的任意一个。[a-z]:匹配 a 到 z 范围内的任意字符。[^abc]:匹配除 a, b, 和 c 之外的任意字符。重复次数:
*:匹配前面的子表达式零次或多次。+:匹配前面的子表达式一次或多次。?:匹配前面的子表达式零次或一次。{n}:匹配前面的子表达式恰好 n 次。{n,}:匹配前面的子表达式至少 n 次。{n,m}:匹配前面的子表达式至少 n 次但不超过 m 次。定位符:
^:匹配输入字符串的开始。$:匹配输入字符串的结尾。\b:匹配单词边界。捕获组:
(pattern):捕获匹配的子表达式。特殊字符:
\d:匹配任意数字字符。\w:匹配任意字母、数字或下划线字符。\s:匹配任意空白字符。#include
#include
#include
int main() {
std::string input = "(1,2),(2,3),(4,5)";
// 定义正则表达式模式
std::regex pattern("\\((\\d+),(\\d+)\\)");
// 迭代器用于遍历匹配结果
std::sregex_iterator it(input.begin(), input.end(), pattern);
std::sregex_iterator end;
// 遍历匹配结果并输出
while (it != end) {
std::smatch match = *it;
std::cout << "Matched: " << match.str() << std::endl;
std::cout << "Group 1: " << match[1].str() << std::endl; // 第一个括号内的数字
std::cout << "Group 2: " << match[2].str() << std::endl; // 第二个括号内的数字
++it;
}
return 0;
}
示例输出:
Matched: (1,2)
Group 1: 1
Group 2: 2
Matched: (2,3)
Group 1: 2
Group 2: 3
Matched: (4,5)
Group 1: 4
Group 2: 5