« Delphiで正規表現(NSRegularExpression) | トップページ | DelphiでObjective-Cのブロック »

2013年11月23日 (土)

Delphiで正規表現(Onigumo)

パクりシリーズの第3弾です。鬼雲版です。鬼雲 (Onigumo)というのは鬼車 (Oniguruma)を改良したエンジン(Oniguruma-mod)とのことで、Ruby 2.0の正規表現エンジンとして使われているそうです。まぁ、自分としてはどちらでも良かったので、最初は鬼車を使う前提でしたが、64bit環境でビルドすると、64ビットから32ビットへの縮小変換の警告??が大量に出るので、鬼雲を使うことにしました。こちらの方はヘッダファイルを見ると、64bit環境も考慮してるようです。

ということで、RegExPackを更新しておきました。

まず、プラットフォームはWin32/Win64に対応してます。現状は動的リンクのみですが、いずれ静的リンクに可能なら対応しようと思ってます。動的リンクする場合は、各プラットフォーム毎のフォルダ(Win32、Win64)内の、onig.dllを実行時にこれらが見つけられるように、パスを通すか適切な位置に配置して下さい。自分で鬼雲をソースからビルドする場合。詳しいビルド方法は鬼雲のドキュメントを参照ということにしますが、エクスポートされた変数をDelphiから参照できるようにするために、一部ソースを修正する必要があります。詳しくはreadme.txtを・・

鬼雲というより元の鬼車が正規表現の文法を切り替えられるようになってるのですが、これにも対応しておきました。

文法を引数に取るコンスタクタを追加しておきました。指定しない場合は、デフォルトのrsPerlです。

ちなみに、当初はOSXにも対応しようとしてて、libonig.dylibをビルドしたのですが、これをダンプして中身を見ると、libonig.dylibが依存してる他のライブラリの相対パスなどではなく自分の環境依存の絶対パスが含まれていて、ちょっと、OSXの事がまだよくわかってなく、これを配布しても他の環境で動くのか不明なので、現状は自分でビルドして・・dashdash

 

« Delphiで正規表現(NSRegularExpression) | トップページ | DelphiでObjective-Cのブロック »

Delphi」カテゴリの記事

MacOS X」カテゴリの記事

Windows」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/53916806

この記事へのトラックバック一覧です: Delphiで正規表現(Onigumo):

« Delphiで正規表現(NSRegularExpression) | トップページ | DelphiでObjective-Cのブロック »

自作ソフトウェア

無料ブログはココログ

メモ