如何在 <regex> C++11 中使用

How to use <regex> in C++11

本文关键字:C++11 gt regex lt      更新时间:2023-10-16

我试图使用正则表达式来接受具有像

这样的序列的字符串
ifelseifelseififif

所以每个else都需要if,但不是每个if都需要else。我知道我可以用笔和纸做这个,用一个简单的正则表达式,像这样的((if)*+(ifelse)*)*。现在我不确定我是否能够用库做这个,因为我从来没有使用过它。那么,是否有可能根据我上面写的正则表达式接受或拒绝字符串呢?

我写这个例子是为了亲身体验,我不明白为什么它返回false。regex_search()不应该找到子字符串匹配?这个代码段每次输出的都是no。

#include <regex>
#include <iostream>
using namespace std;
int main(){
  string sequence="ifelse";
  regex rx("if");
  if(regex_search(sequence.begin(),sequence.end(),rx)){
    cout<<"match found"<<endl;
  }else{
    cout<<"nope"<<endl;
  }
}

我正在使用g++ 4.7,并尝试编译g++ -std=gnu+11 reg.cppg++ -std=c++11 reg.cpp

如果您正在使用g++进行编译,可能是因为regex尚未得到完全支持。

查看当前c++在g++中的状态。

打印"match found",我刚刚运行了它。如果您不使用c++11,它将无法编译,但这里是我如何编译它。clang++ -std=c++11 -stdlib=libc++ reg.cpp