C++ STL 中的 match_results length()

2025 年 5 月 24 日 | 4 分钟阅读

C++ 标准库中的正则表达式功能包括 std::match_results 类模板。它与正则表达式一起使用,用于保存正则表达式匹配的结果。可以使用 std::match_results 中的 length() 函数获取特定子匹配的匹配文本长度。

C++ STL 中 std::match_results 类的 length() 成员函数可用于查找匹配子字符串的长度。

语法

以下是使用 length() 的语法

返回类型

  • size_t:此类型表示一个无符号整数,代表系统中可包含的最高有效对象大小的分配模型。

参数

没有参数。length() 方法不需要任何参数即可运行。

用途

为了找到完整匹配的长度,length() 函数通常在 std::match_results 的实例上执行。

或者,它可以与索引结合使用以获取特定子匹配的长度。

1. C++ 中的正则表达式

对于字符串中的模式匹配,正则表达式是一个方便的工具。

C++ 标准库中包含一个头文件,其中包含用于使用正则表达式的函数和类。

2. std::match_results 模板类

C++ 标准库的正则表达式功能之一是 std::match_results 类模板 ()。

它是一个模板类,用于存储正则表达式匹配的结果和匹配子表达式的详细信息。

3. length() 成员函数

std::match_results 模块具有 length() 成员函数。

它用于获取与特定子匹配(由其索引表示)匹配的文本长度。

4. 用例

当需要确定匹配文本的长度以进行进一步处理或验证时,它很有用。

它可以应用于您希望提取和处理与正则表达式匹配的子字符串的情况。

5. 注意

对子匹配使用 length() 时请谨慎,以防止未定义行为并确保子匹配索引有效。

示例

让我们举一个例子来说明 C++ 中的 match_result length() 函数。

输出

Entire match: The
Length of the entire match: 3
Submatch 0: The
Length of submatch 0: 3   

说明

1. 包含头文件

这些是用于正则表达式和输入/输出函数的标准 C++ 头文件。

2. 定义正则表达式和输入字符串

输入字符串是包含需要搜索的文本的字符串。

WordPattern 是一个与单词对应的正则表达式模式。它使用转义序列 \b 表示单词边界,\w 表示单词字符。

3. 声明 std::smatch 用于匹配结果

声明一个专门的 match_results 对象 std::smatch,用于匹配结果。此对象存储有关正则表达式搜索结果的信息。

4. 执行 Regex_search

可以使用 std::regex_search 函数在输入字符串 (input) 中找到正则表达式模式 (wordPattern)。matches 对象包含匹配结果的存储。

5. 显示完整匹配及其长度

如果检测到匹配,则使用 matches.str() 和 matches.length() 输出整个匹配的子字符串及其长度。

6. 显示单个子匹配及其长度

之后,通过迭代特定的子匹配(捕获组),它使用 matches[i].matches.length(i) 和 str() 输出每个子匹配的长度。

7. 返回 0

通知操作系统程序已完成。

结论

总之,这个 C++ 程序使用正则表达式在给定字符串中搜索单词。搜索使用 std::regex_search,匹配结果存储在 std::smatch 中。之后,程序会打印完整匹配和每个子匹配的详细信息,包括长度。该示例演示了如何使用 C++ <regex> 功能提取和操作匹配信息。