プラットフォーム非依存または Windows 固有の、ネイティブ C++ 用の堅牢で使いやすい正規表現エバリュエーターを探しています。
要件:
- Boost または ACE 正規表現ライブラリを使用できません (残念ながら)
- .NET Regex (またはマネージ コード) を使用できない
主な要件は、スタンドアロンでオープンであることです。
libpcreを試す
Windows で立ち往生している場合は、動作するはずの Windows ポートがあります。私はe-texteditorがそれを使用していることを知っているので、少なくともそれが機能する証拠です:-)
Visual Studioを使用する場合は、Visual C ++ 2008 Feature Packリリースを使用できます。これにより、TR1の一部が実装され、正規表現の解析が含まれます。それを得る
GNU C ライブラリは正規表現をサポートしています。開いていて、RE コードは簡単に抽出できるようです。
私はPCREの推奨を支持します。Windows の C++ プロジェクトで使用しましたが、うまく機能します。商用ソフトウェアを構築する場合でも無料です。また、事実上の標準の正規表現言語のようなものも実装しており、これはユーザーにとって歓迎すべきものです。PCRE はもちろん Perl と互換性があり、Python も同じライブラリを使用しています。
ネイティブの PCRE インターフェイスは少しぎこちなく、非常に C スタイルであるため、適切な C++ ラッパーを作成する価値があります。すでに存在する可能性が非常に高いですが、私はどれにも精通していません。
GNU Cライブラリの正規表現機能(regcomp()、regexec()およびその仲間)が壊れています。代わりにlibetreを使用してください。関数のシグネチャは、glibcが提供するものと一致します。 http://laurikari.net/tre/
Microsoft ATL の正規表現ライブラリを使用しないのはなぜですか? ケニー・カーは最近、それについて短い記事を書きました。
ATL には、軽量の正規表現の実装が含まれています。元は Visual C++ の一部でしたが、現在は ATL サーバーのダウンロードに含まれています。
CAtlRegExp
クラス テンプレートは、パーサーとマッチング エンジンを実装します。...正規表現の文法は、
atlrx.h
ヘッダー ファイルの先頭で定義されます。
CodePlex の無料の ATL サーバー ライブラリとツールには、正規表現パーサーが含まれています。CodePlex アーカイブの AtlServer を参照してください
ATL サーバーは、開発者がサービス タイプの C++ アプリケーションおよび Web サービスのクライアント部分とサーバー部分の両方を構築できるようにする C++ クラスのライブラリです。SOAP メッセージング、キャッシュ機能、スレッド機能、正規表現処理、セッション状態の管理、パフォーマンス監視、MIME サポート、IIS との統合、セキュリティと対話するためのクラスなど、大規模なインターネット サイトを構築するために必要な機能の多くを提供します。および暗号化インフラストラクチャ。ライブラリの以前のバージョンは、Visual Studio 2002、Visual Studio 2003、および Visual Studio 2005 の一部です。このプロジェクトは、Visual Studio 2005 SP1 の一部としてリリースされたライブラリのバージョンから開始されました。