2

我正在尝试使用正则表达式来接受具有类似序列的字符串

ifelseifelseififif

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

我写这个样本是为了弄湿我的脚,我不明白为什么它返回错误。regex_search() 不应该找到子字符串匹配吗?该片段每次都打印不。

#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.cpp 编译g++ -std=c++11 reg.cpp

4

2 回答 2

1

如果您使用 g++ 进行编译,可能是因为 regex 尚未完全支持。请参阅此处了解 g++ 中的当前 C++11 状态。

于 2013-05-03T01:32:34.247 回答
1

这会打印“找到匹配”,我只是运行它。如果您不使用 c++11,它将无法编译,但这是我编译它的方式。 clang++ -std=c++11 -stdlib=libc++ reg.cpp

于 2013-05-03T01:34:21.033 回答