导入
简介
现在我们进入 C++ 中的正则表达式。我们的第一步是理解这个库的作用。
正则表达式是一种用于描述文本模式的语言。使用正则表达式需要包含头文件 <regex>。
正则表达式是完成以下任务的强大工具:
- 检查一段文本是否匹配某个文本模式:
std::regex_match - 在文本中搜索某个文本模式:
std::regex_search - 将某个文本模式替换为另一段文本:
std::regex_replace - 遍历文本中所有匹配的文本模式:
std::regex_iterator和std::regex_token_iterator
C++ 支持六种不同的正则表达式语法。默认使用 ECMAScript 语法,这是六种语法中最强大的一种,与 Perl 5 的语法非常相似。其余五种语法分别是基本语法、扩展语法、awk 语法、grep 语法和 egrep 语法。
🔑 使用原始字符串
在正则表达式中建议使用原始字符串字面量。在 C++ 中表示文本的正则表达式看起来很不美观:C\\+\\+。每个加号都需要两个反斜杠。首先,加号在正则表达式中是特殊字符;其次,反斜杠在字符串中也是特殊字符。因此,一个反斜杠用于转义加号,另一个反斜杠用于转义反斜杠。而使用原始字符串字面量后,第二个反斜杠就不再需要了,因为反斜杠在字符串中不会被解释。1#include <regex> 2//... 3std::string regExpr("C\\+\\+"); 4std::string regExprRaw(R"(C\+\+)");
处理正则表达式通常分为三个步骤:
I. 定义正则表达式:
1std::string text = "C++ or c++."; 2std::string regExpr(R"(C\+\+)"); 3std::regex rgx(regExpr);
II. 存储搜索结果:
1std::smatch result; 2std::regex_search(text, result, rgx);
III. 处理结果:
1std::cout << result[0] << std::endl;
在下一课中,我们将学习正则表达式如何识别 C++ 中的不同类型的文本。