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;
}