しますか?はいの場合、そのドキュメントはどこで入手できますか...そうでない場合は、どちらが最良の代替手段ですか?
9 に答える
C++11 には、ついに標準正規表現ライブラリstd::regex が含まれるようになりました。
C++11 実装にアクセスできない場合は、適切な代替手段としてboost regexを使用できます。std::regex と完全に同等ではありません (たとえば、「empty()」メソッドは std::regex にありません) が、C++ の非常に成熟した正規表現の実装です。
UNIX ライクなシステムでは、 POSIX 正規表現関数を使用できます。
Microsoft Visual C++ 2008 Feature Pack 1 (現在は Visual Studio 2008 Service Pack 1 に組み込まれています) には、「公式」TR1 正規表現型の実装が含まれています。ノックアウトしてください:-)
ブースト正規表現ライブラリを確認してください。これは、C++0x の標準の一部になるはずです。
標準でコンパイラにバンドルされていることを意味する場合は、そうではありません。しかし、正規表現拡張をバンドルする他の言語のほとんどは、かなり標準的なc実装を使用しています。たとえば、 PCRE - Perl 互換の正規表現と C ライブラリは、POSIX 正規表現をサポートしています ( man ページを参照)。
正規表現は、C++ 拡張 TR1 の一部です。Dinkumware、Visual Studio などは既にこれを実装しています。見る
標準のISO/IEC 14882:2011プログラミング言語C ++は、成熟したBoostライブラリの影響を強く受けるC++のライブラリの一部として正規表現クラスを記述しています。
不思議なことに、2013年1月の時点で、コンパイラのこの標準への準拠はまだ不十分です。たとえば、GNUコンパイラスイートの人気のあるC ++コンパイラは、標準のこの部分をサポート/準拠していません。
そのため、コンパイラのサポートが準拠するまで、この時点でBoostを使用することをお勧めします。
TrolltechのQtにも、非常に使いやすい正規表現の実装があります。ただし、Qtを他の目的に使用する予定がない場合は、Boost.Regexを使用します。これは、他の目的にもBoostを使用することをお勧めします。
+1 for PCRE - Perl Compatible Regular Expression、Mircosoft の GRETAも使用したことを思い出しました。