C ++ STL中的match_results length()
在本文中,我们将讨论C++STL中match_results::length()函数的工作原理,语法和示例。
什么是C++STL中的match_results?
std::match_results是一个类似于容器的特殊类,用于保存匹配的字符序列的集合。在此容器类中,正则表达式匹配操作可找到目标序列的匹配项。
什么是match_results::length()?
match_results::length()函数是C++STL中的内置函数,在<regex>头文件中定义。length()
用于检查与之关联的match_results对象中第n个匹配项的长度。length()
接受一个参数,该参数是匹配号,该值应小于match_results::size(),以检查第n个匹配项的长度。
语法
smatch_name.length(unsigned int num);
参数
此函数接受一个参数,该参数是匹配号,该匹配号应小于容器的大小。匹配号0代表整个匹配表达式。
返回值
此函数返回对象中匹配数的无符号整数值
示例
Input: std::smatch; smatch.length(0); Output: 0
示例
#include <bits/stdc++.h> using namespace std; int main() { string str = "nhooo"; regex R("(Tutorials)(.*)"); smatch Mat; regex_match(str, Mat, R); for (int i = 0; i < Mat.size(); i++) { cout<<"Match is : " << Mat[i]<< endl; } return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Match is : nhooo Match is : Tutorials Match is : Point
示例
#include <bits/stdc++.h> using namespace std; int main() { string sr = "nhooo.com"; regex Re("(Tutorials)(.*)"); smatch Mat; regex_match(sr, Mat, Re); int len = 0; string str; for (int i = 1; i < Mat.size(); i++) { if (Mat.length(i) > len) { str = Mat[i]; len = Mat.length(i); } } cout<<"Match length is of: " << len; return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Match length is of: 9