dyaregexp../index.htmldyaregexpなんなのなんなの使える表現downloadC言語からの使用例D言語からの使用例なんなのなんなのC言語で、Delphiから使うのを前提に組んだ謎の正規表現エンジン。故にリンクさえできれば言語を問わず使えます。C++でも動くようです。D、GNAT(gcc)向けのインポートユニットを同梱しています。EUC-JPを混在可能です。UnicodeはUCS-2まで、16ビットの範囲で対応です。他の正規表現ライブラリには無い(と思われる)最大の特徴として、IsDBCSLeadByte/CompareStringを用いてマッチを行う、全半角や仮名の対応テーブル作るのめんどくさかったんだよ速度など知った事か無謀モードWindowsとの親和性が非常に高いモードを搭載しています。UTF-8/16の時はCompareStringWを用います。APIを用いるメリットとして、テーブルを一切抱えこむことなく全半角同一視やひらがなカタカナ同一視ができてしまいます。文字コード決め打ちから逃れられますので、外国版Windowsでは、その国での正しい動作を期待できます。逆にWindows以外では、mblenとかstrcollでそれっぽくしてはいますが、機能は制限されます。アルゴリズムはNFA...かな(今だによくわかってない)。2008-07-25C言語からの使用例Boostの正規表現が、なんかexeサイズが200kもBoostされるというわけわからん事実*1を知りましたので、対抗して(身の程知らずだな俺)サンプルソースあげておきます。大御所と比較したら、それはもう機能的にも速度的にもダメダメですが、dyaregexpには20kに満たないというメリットがあります。サンプルのお題はどこかのパクリだったりしますが、気にしてはいけません。C++でコンパイルし直す必要がありました。D版はphobosのRegExpクラス互換メソッドを幾つか用意してます。(phobosやBoostと異なり)見つかった位置を覚えてはいないため、位置情報が必要な場合は明示的に受け取ることになります。昔の話ですが、Boostはmakeで勝手にbinに放り込むという傲慢仕様が気に食わなかったのと、それがDelphi側のmake.exe...bcc32のと完全に同一...を使っていたのでなんとDelphi6\Binに放り込まれたという事故を併発したため、あまりBoostに良い感情は無いです。