C++ 如何将适用于一对的正则表达式扩展到多对

C++ 如何将适用于一对的正则表达式扩展到多对,c++,regex,recursion,C++,Regex,Recursion,我已经编写了一个代码来查找所有与模式匹配的项,如23您似乎正在寻找的 REGEX\u编号”(“REGEX\u符号REGEX\u编号”)+“ 实际上,这些括号只是用来分隔符号,以解释problem@VIVID:请注意,我用(..)+,家长用于分组,+用于重复(1个或更多)。感谢演示!如何避免以0开头的数字?我用你的正则表达式在问题的末尾添加了图片。我先试了试,但那是从=开始接受的。它有点“不平滑”。REGEX_NUMBER应该是“(0 |[1-9]\d*)”(因为在我看来,零应该是有效的)。该站

我已经编写了一个代码来查找所有与模式匹配的项,如
23您似乎正在寻找的

REGEX\u编号”(“REGEX\u符号REGEX\u编号”)+“


实际上,这些括号只是用来分隔符号,以解释problem@VIVID:请注意,我用
(..)+
,家长用于分组,
+
用于重复(1个或更多)。感谢演示!如何避免以0开头的数字?我用你的正则表达式在问题的末尾添加了图片。我先试了试,但那是从
=
开始接受的。它有点“不平滑”。
REGEX_NUMBER
应该是
“(0 |[1-9]\d*)”
(因为在我看来,零应该是有效的)。该站点进行搜索而不是精确匹配,您可以使用
^
$
作为开始和结束。
void solve(string text) {
   // using solved(string text) [but optional]
}
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <regex>
using namespace std;
#define REGEX_SIGN   "(=<|=|>|<=|<>|>=)"
#define REGEX_DIGIT  "[0-9]"
#define REGEX_NUMBER "[^0]\\d*"

void check(string text) {

  regex sign(REGEX_SIGN);
  regex digit(REGEX_DIGIT);
  regex number(REGEX_NUMBER); 
  regex relation(REGEX_NUMBER REGEX_SIGN REGEX_NUMBER);

  string word = "";

  for (int i = 0; i < text.length(); i++) {

    if (text[i] == ' ') {

      regex_match(word, relation) ? cout << "✔️  " : cout << "☒  ";
      cout << word << " ";
      
      cout << endl;
      word = "";

    } else {
      word += text[i];
    }
  }

}

int main() {

  string line, text;

  ifstream fin;
  fin.open("name.txt");

  if (fin.good()) {

    while (getline(fin, line)) {
      text += line + " ";
    }

    check(text);    
  }
  return 0;
}