簡體   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