C++ 使用Google RE2同时匹配多个正则表达式

C++ 使用Google RE2同时匹配多个正则表达式,c++,re2,C++,Re2,我正在尝试使用Google的RE2库快速匹配许多(500+)正则表达式,因为我希望得到类似的结果。我想使用第13页上的RE2-m 从我在网上看到的情况来看,Set界面是一个不错的选择,尽管我不确定从哪里开始——我还没有找到使用Set界面的Google RE2在线教程。有人能给我指出正确的方向吗?今天刚刚为我正在研究的东西实现了这个,这里有一个片段供将来的读者使用 使用RE2处理此问题的正确类是RE2::Set,您可以找到代码 以下是一个例子: std::vector<std::string

我正在尝试使用Google的RE2库快速匹配许多(500+)正则表达式,因为我希望得到类似的结果。我想使用第13页上的RE2-m


从我在网上看到的情况来看,Set界面是一个不错的选择,尽管我不确定从哪里开始——我还没有找到使用Set界面的Google RE2在线教程。有人能给我指出正确的方向吗?

今天刚刚为我正在研究的东西实现了这个,这里有一个片段供将来的读者使用

使用
RE2
处理此问题的正确类是
RE2::Set
,您可以找到代码

以下是一个例子:

std::vector<std::string> kRegexExpressions = {
  R"My name is [\w]+",
  R"His number is [\d]+",
};

RE2::Set regex_set(RE2::DefaultOptions, RE2::UNANCHORED);

for (const auto &exp : kRegexExpressions) {
  int index = regex_set.Add(exp, &err);
  if (index < 0) {
    <report-error>
    return;
  }
}

if (!regex_set.Compile()) {
  <report-error>
  return;
}

std::vector<int> matching_rules;
if (!regex_set_.Match(line, &matching_rules)) {
  <no-match>
  return;
}

for (auto rule_index : matching_rules) {
  std::cout << "MATCH: Rule #" << rule_index << ": " << kRegexExpressions << std::endl;
}
std::vector kRegexExpressions={
R“我的名字是[\w]+”,
R“他的号码是[\d]+”,
};
RE2::Set regex_Set(RE2::DefaultOptions,RE2::UNANCHORED);
for(常量自动和exp:kRegexExpressions){
int index=regex_set.Add(exp,&err);
如果(指数<0){
返回;
}
}
如果(!regex_set.Compile()){
返回;
}
std::向量匹配规则;
if(!regex_set_.Match(行和匹配规则)){
返回;
}
for(自动规则索引:匹配规则){

std::cout今天刚刚为我正在研究的东西实现了这个,这里有一个片段供将来的读者使用

使用
RE2
处理此问题的正确类是
RE2::Set
,您可以找到代码

以下是一个例子:

std::vector<std::string> kRegexExpressions = {
  R"My name is [\w]+",
  R"His number is [\d]+",
};

RE2::Set regex_set(RE2::DefaultOptions, RE2::UNANCHORED);

for (const auto &exp : kRegexExpressions) {
  int index = regex_set.Add(exp, &err);
  if (index < 0) {
    <report-error>
    return;
  }
}

if (!regex_set.Compile()) {
  <report-error>
  return;
}

std::vector<int> matching_rules;
if (!regex_set_.Match(line, &matching_rules)) {
  <no-match>
  return;
}

for (auto rule_index : matching_rules) {
  std::cout << "MATCH: Rule #" << rule_index << ": " << kRegexExpressions << std::endl;
}
std::vector kRegexExpressions={
R“我的名字是[\w]+”,
R“他的号码是[\d]+”,
};
RE2::Set regex_Set(RE2::DefaultOptions,RE2::UNANCHORED);
for(常量自动和exp:kRegexExpressions){
int index=regex_set.Add(exp,&err);
如果(指数<0){
返回;
}
}
如果(!regex_set.Compile()){
返回;
}
std::向量匹配规则;
if(!regex_set_.Match(行和匹配规则)){
返回;
}
for(自动规则索引:匹配规则){
标准::cout