2016-08-31 16 views
-1

私は現在Boost Regexライブラリを使用しており、C++でargumentsという関数を取得しようとしています。例えば、私はHTMLでページを持っていると呼ばれるJavaScript関数は、我々はそれを動作していない私は現在持っている何RegexはBoost Regex C++でどのように動作しますか

XsrfToken.setToken('54sffds'); 

、のようなものが呼び出されます。

std::string response = request->getResponse(); 

boost::regex expression; 

if (type == "CSRF") { 
    expression = {"XsrfToken.setToken\('(.*?)'\)"}; 
} 

boost::smatch results; 

if (boost::regex_search(response, results, expression)) { 
    std::cout << results[0] << " TOKEN" << std::endl; 
} 

ここで、responseはHTML Webページで、expressionは正規表現です。条件文が実行されているので、私は正規表現に何か問題があると思いますが、わかりません。

[EDITED]

は、その正規表現をPHPから抽出されたことに言及し忘れたとPHPの正規表現チェッカー/デバッガで

+0

ドキュメントを読むための任意のチャンスを? http://www.boost.org/doc/libs/1_53_0/libs/regex/doc/html/index.html – Serge

+1

私は、よく私の意見で文書化されていない、ドキュメントを読んでみました。 – Kurieita

答えて

1

を働くあなたのミスをしないregex構文で?*後に冗長であるが、しかし、リテラル定数C++文字列で:バックスラッシュ文字は、バックスラッシュでエスケープする必要があります。

#include <boost/regex.hpp> 
#include <iostream> 
#include <string> 

std::string response("XsrfToken.setToken('ABC')"); 
boost::regex expression("XsrfToken.setToken\\('(.*?)'\\)"); 

int main() { 

    boost::smatch results; 

    if (boost::regex_search(response, results, expression)) { 
     std::cout << results[0] << " TOKEN" << std::endl; 
    } 
} 
関連する問題