11

コードは次のとおりです。

31のグループがあるときに見つかります:

try
{
    regex re("(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)", tr1::regex::icase);
}
catch (regex_error e)
{
    std::cout << e.what();
}

ただし、もう1つのグループ(合計32グループ)を追加しようとしています。

try
{
    regex re("(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)", tr1::regex::icase);
}
catch (regex_error e)
{
    std::cout << e.what();
}

regex_error例外がキャッチされ、出力されます

正規表現エラー

Windows7でVisualStudio2010を使用しています

グループの上限があるようです。どうすれば制限を破ることができますか?

4

1 に答える 1

1

Windowsバージョンについてはわかりませんが、gccバージョンは部分的なサポートしかありません

http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011

あなたが見ているそのセクション28。他の言語はより多くのグループに一致するようです

多分別のエンジンを試してみませんか?

http://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines

于 2013-01-07T09:39:23.903 に答える