質問
プラットフォームに依存しない、または Windows 固有の、ネイティブ C++ 用の堅牢で使いやすい正規表現評価ツールを探しています。
要件:
- Boost または ACE 正規表現ライブラリは使用できません (残念ながら)
- .NET Regex (またはマネージ コード) は使用できません
主な要件は、スタンドアロンでオープンであることです。
解決
C++11 には正規表現のサポートが含まれるようになりました。プラットフォームに依存しません。最新のコンパイラが必要なだけです。どれを使用すればよいかについては、次のリストを確認してください。
http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
それが役に立てば幸い
他のヒント
試す リブプクレ
Windows で行き詰まっている場合は、Windows ポートがあり、それが機能するはずです。知っている 電子テキストエディタ 使っているので、少なくともそれが機能する証拠です:-)
Visual Studio を使用している場合は、Visual C++ 2008 Feature Pack リリースを使用できます。これには TR1 の一部が実装されており、正規表現解析が含まれています。 それを得る
GNU C ライブラリはサポートしています 正規表現. 。オープンになっており、REコードは簡単に抽出できるようです。
GNU C ライブラリの正規表現機能 (regcomp()、regexec() およびその仲間) が壊れています。代わりに libetre を使用してください。関数のシグネチャは、glibc によって提供されるものと一致します。http://laurikari.net/tre/
私が次に勧めたいのは、 PCRE. 。Windows の C++ プロジェクトでこれを使用しましたが、うまく機能します。商用ソフトウェアを構築する場合でも無料です。また、事実上の標準の正規表現言語のようなものも実装されており、ユーザーにとっては歓迎されるでしょう。もちろん PCRE は Perl と互換性があり、Python も同じライブラリを使用します。
ネイティブ PCRE インターフェイスは少し扱いにくく、非常に C スタイルなので、それを囲む優れた C++ ラッパーを作成する価値はおそらくあります。すでに存在している可能性が非常に高いですが、私はどれも知りません。
C++11 以降には、 標準正規表現ライブラリ.
を含めます <regex>
ヘッダーを追加して使用します。
Microsoft ATL の正規表現ライブラリを使用してみてはいかがでしょうか?ケニー・カーはこう書いています 短い記事 最近それについて。
ATL には軽量の正規表現実装が含まれています。もともとVisual C ++の一部でしたが、ATL Serverのダウンロードに含まれています。
の
CAtlRegExp
クラステンプレートは、パーサーとマッチングエンジンを実装します。...正規表現の文法は、
atlrx.h
ヘッダファイル。
CodePlex の無料の ATL サーバー ライブラリとツールには、正規表現パーサーが含まれています。見る CodePlex アーカイブの AtlServer
ATL Serverは、開発者がサービスタイプのC ++アプリケーションとWebサービスのクライアントとサーバーの両方の部分を構築できるようにするC ++クラスのライブラリです。SOAPメッセージング、キャッシング施設、スレッディング施設、正規表現処理、セッション状態の管理、パフォーマンス監視、MIMEサポート、IISとの統合、セキュリティと対話するためのクラスなど、大規模なインターネットサイトを構築するために必要な機能の多くを提供します。および暗号化インフラストラクチャ。ライブラリの以前のバージョンは、Visual Studio 2002、Visual Studio 2003、Visual Studio 2005の一部です。このプロジェクトは、Visual Studio 2005 SP1 の一部としてリリースされたライブラリのバージョンから開始されました。