C++ 中的 match_results prefix() 和 suffix()

2024 年 8 月 29 日 | 4 分钟阅读

在本文中,您将学习 C++ 中 match_results prefix()suffix() 的语法和示例。但在介绍 prefix() 和 suffix() 函数之前,您必须了解 C++ 中的正则表达式。

C++ 中,由 <regex> 头文件提供的正则表达式与 std::match_results 类模板结合使用。匹配结果由变量 match_results 表示,它是将正则表达式与字符串进行比较的结果。C++ 中的 <regex> 头文件提供了用于处理正则表达式的函数。std::match_results 类模板表示正则表达式与字符串匹配的结果。

  • std::match_results 类具有名为 prefix()suffix() 的成员函数,分别提供对匹配文本前缀和后缀的访问权限。

让我们更详细地研究 std::prefix() 和 suffix() 成员函数。

std::sub_match 类模板表示匹配的子字符串或与正则表达式匹配的原始文本段。它保存了有关字符串匹配部分的信息,例如匹配的长度和在原始字符串中的位置,以及其他有用的数据。

当您使用 match.prefix()match.suffix() 时,您将获得一个名为 std::sub_match 的对象,其中 match 是 std::match_results 的对象。之后,您可以处理此 std::sub_match 对象以获取有关前缀或后缀的信息,包括文本的长度、位置和其他数据。

"prefix()"

std::sub_match 对象是一个成员函数,它返回匹配子字符串之前出现的文本。匹配前缀的详细信息包含在 std::sub_match 中。

match_results::prefix() 是 C++ 内置函数,用于检索输入目标字符串中匹配字符串之前的字符串。

语法

它具有以下语法:

注意:smatch_name 是 match_results 类的对象。

参数:此函数不接受任何参数。

返回值:此函数返回目标字符串中匹配序列之前的序列。

"suffix()"

与 prefix() 类似,suffix() 会生成一个对象,其中包含匹配子字符串之后出现的文本,即 std::sub_match。它包含有关相应后缀的详细信息。

match_results::suffix() 是 C++ 内置函数,用于检索输入目标字符串中匹配字符串之后出现的字符串。

语法

它具有以下语法:

注意:smatch_name 是 match_results 类的对象。

参数:此函数不接受任何参数。

返回值:此函数返回目标字符串中匹配序列之前的序列。

示例

让我们举一个例子来说明 C++ 中 match_results prefix() 和 suffix() 函数的用法。

输出

Matched: Hello
Prefix: 
Suffix: World! This is a sample text.
-----------------
Matched: World
Prefix: , 
Suffix:! This is a sample text.
-----------------
Matched: This
Prefix:! 
Suffix:  is a sample text.
-----------------
Matched: is
Prefix:  
Suffix:  a sample text.
-----------------
Matched: a
Prefix:  
Suffix:  sample text.
-----------------
Matched: sample
Prefix:  
Suffix:  text.
-----------------
Matched: text
Prefix:  
Suffix:
-----------------

说明

  • *iter 返回一个反映当前匹配的 std::smatch 对象。
  • 使用 match.str() 检索单词或实际匹配的子字符串。
  • 可以使用 prefix() 和 match.suffix() 访问匹配单词的前缀和后缀。

使用 std::sregex_iterator 遍历给定文本中正则表达式模式的所有匹配项。对于每个匹配项,match.prefix() 返回匹配子字符串之前的文本,而 matching.suffix() 获取匹配子字符串之后的文本。

内容包含正则表达式 \\b\\w+\\b 匹配的单词。循环会打印找到的每个单词及其前缀(单词之前的文本)和后缀(单词之后的文本)。

它除了允许您提取匹配的子字符串以及每个匹配项之前和之后出现的文本之外,还为您提供了有关文本中检测到的匹配项的上下文信息。

结论

  • 使用 prefix() 函数获取匹配子字符串之前的文本。
  • 使用 suffix() 函数获取匹配子字符串之后的内容。
  • 这些函数使您能够检查或处理周围的文本以及匹配项,这在您需要提取更多上下文或有关匹配子字符串的信息时特别有用。
  • 通过将这些函数与正则表达式结合使用,您可以高效地处理更复杂的文本处理任务,从而从给定字符串及其上下文中提取特定信息。