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