我的正则表达式代码有什么问题?

What's wrong with my code of regex?

本文关键字:问题 什么 正则表达式 代码 我的      更新时间:2023-10-16
#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
int main(){
  regex rule("(?<test>\d+)");
  string str = "11.22.33.44";
  boost::smatch result;
  string::const_iterator start = str.begin();
  string::const_iterator end = str.end();
  while (regex_search(start, end, result, rule))
    {
     std::cout << result['test'].str() << std::endl;// here 
     start = result['test'].second;// it seems it work 
    }
  getchar();
  return 0;
}

为什么它不能正常工作?我习惯于使用 PHP 来做到这一点。如何使我的代码正常工作?代码的目的是匹配正则表达式命名组中的每个数字。

'test'是一个字符文字。你想要使用字符串文本:使用 "test"

此外,使用编译器警告:

test.cpp|13 col 29| warning: multi-character character constant [-Wmultichar]
||          std::cout << result['test'].str() << std::endl; // here

演示

住在科里鲁

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
int main() {
    regex rule("(?<test>\d+)");
    string str = "11.22.33.44";
    boost::smatch result;
    string::const_iterator start = str.begin();
    string::const_iterator end = str.end();
    while (regex_search(start, end, result, rule)) {
        std::cout << result["test"].str() << std::endl;
        start = result["test"].second;
    }
}

指纹

11
22
33
44