2016-04-25 85 views
0

我在C++工作中遇到了正则表达式问题。 最后,我想从匹配的组建立一个布尔矢量( “ITöIS BFAMPM” - > “ 000000”)。 要构建矢量,我需要获取每个组的开始和长度。来自正则表达式的布尔向量

该模式运行良好regexr.com,我得到所有的goups。但是我的代码返回一个空的结果集。

#include <iostream> 
#include <vector> 
#include <regex> 

using namespace std; 

string board = "ITOISBFAMPM" 
"ACQUARTERDC" 
"TWENTYFIVEX" 
"HALFBTENFTO" 
"PASTERUNINE" 
"ONESIXTHREE" 
"FOURFIVETWO" 
"EIGHTELEVEN" 
"SEVENTWELVE" 
"TENSEOCLOCK" 
"1234"; 

string pattern = ".*(IT).*(IS).*(HALF).*(PAST).*(TWELVE).*(123).*"; 
// string pattern = "(PAST)"; 


int main() 
{ 
    regex rgx(pattern); 
    smatch result; 
    regex_search(board, result, rgx); 

    cout << board << endl; 
    cout << pattern << endl; 

    cout << result.size(); 
    for(size_t i=0; i<result.size(); ++i) 
    { 
     cout << result[i] << endl; 
    } 
} 
+3

你使用什么编译器?它是什么版本?仍然有许多编译器使用缺乏完整的C++ 11支持,特别是当涉及到正则表达式功能时。 –

+1

您的代码似乎[适用于我](http://rextester.com/GDT28322),完全如图所示。 –

+0

我使用C++(简单)跑步者在https://c9.io/上运行它。到目前为止,我无法弄清楚更多细节。 – Achim

回答

0

正如Igor Tandetnik所示,代码的工作原理如下。问题在于翻译。