繁体   English   中英

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

[英]How to use <regex> in C++11

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

ifelseifelseififif

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

我写这个示例是为了弄湿我的脚,但我不明白为什么它返回false。 regex_search()是否应该找到子字符串匹配项? 这段代码每次都打印nope。

#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。 有关g ++中C ++ 11的当前状态,请参见此处

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM