2013-12-08 182 views
0

我試圖解析一些文本,找出它是否是一個鏈接或不。這是我的代碼:使用正則表達式搜索

smatch m; 
    regex e("http[s]?://(?:[a-zA-Z]|[0-9]|[[email protected]&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"); 
    bool match = regex_search(proto->message, m, e); 
    if(match == true) { 
     chan->Say("Matched link"); 
    } 

我得到的錯誤是:

/main.cpp|26|error: no matching function for call to ‘regex_search(char [1024], boost::smatch&, boost::regex&)’| 

當我把取m的regex_search它的工作原理,並返回一個boolean,但我想知道是什麼實際比賽是。

+0

爲什麼不使用'#include ','std :: smatch'和'std :: regex'? – Julius

+1

@Julius也許是因爲GCC沒有實現它們? –

+0

當我包含regex.h時,我得到的「正則表達式」沒有在本文中定義。當我包含正則表達式時,我僅僅爲了包含它而得到一個編譯錯誤。 – user3080539

回答

1

Boost的regex_search沒有定義你想要使用的簽名。在沒有一個重載是boost :: smatch的第二個參數。事實上,smatch並沒有被使用。請參閱docs,特別是頁面底部的示例。