2016-05-16 8 views
1

私はC++で最も基本的な正規表現の例をデフォルトのlibを使って実行しようとしていますが、クラッシュやインコヒーレントな動作を続けています。C++でのシンプルな正規表現の使い方

// with -std=c++11 
#include <regex> 
using namespace std; 

int main() 
{ 
    // Copied from the documentation, this one works 
    if (std::regex_match ("subject", std::regex("(sub)(.*)"))) 
     std::cout << "string matched\n"; 
    // The most simple example I could try, crash with "regex_error" 
    if (std::regex_match ("99", std::regex("[0-9]*"))) 
     std::cout << "integer matched\n"; 
} 

複数の構文とフラグを試しましたが、何も動作していないようです。私のコードは私が見つけることができるすべての例と一致するように見えるので、私は何が欠けているかを見るのに苦労しています。

+3

[正規表現についてのgcc 4.8以前のバグはありますか?](http://stackoverflow.com/a/12665408/3832970)を参照してください。 –

+0

ハム、だから私は実際に正規表現をC++で使うはずですか? – Dillinur

+0

@Dillinur gccは現在6.1までです。あなたはあなたのコンパイラをアップグレードすることができます。 – erip

答えて

1

@WiktorStribiżewが述べたように、それは私のコンパイラが古すぎるということでした。コンパイラを更新すると(gcc 4.1からgcc 4.9へ)、問題は解決しました!