Logo
Section 1 / 13

简介

现在我们进入 C++ 中的正则表达式。我们的第一步是理解这个库的作用。

导入

简介

现在我们进入 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++ 中的不同类型的文本。

字符串

字符类型