TPerlRegEx (PCRE 正規表現コンポーネント) を利用する - Delphi

この例ではうまく動いていますが、内部エラー:L4077が出るケースが多々あるようです。 コード中で最低1回、Matchを実行するとコンパイルは通るらしいです。
procedure TForm1.Button1Click(Sender:TObject);
begin
  PerlRegEx1.Match;
end
Delphi2009ではUnicodeに対応した正規表現テキストマッチコンポーネントであるTPerlRegExが利用できます。ここでは、実際にTPerlRegExをインストールして利用してみます。 まず、TPerlRegExをダウンロードします。 regular-expressions.info にアクセスします。

Tool&Language ページにアクセスします。左のメニューの一番上にDelphiがありますので、クリックします。


PCRE-based Components for Delphi for Windows/Win32 の欄から TPerlRegEx をダウンロードします

適当なディレクトリに中身を展開します。

PerlRegExD2009.dproj を読み込みます。


デフォルトでは出力先が変なパスになっているので修正します。プロジェクトオプションを開いて、出力パスをチェックします。

全部クリアしました。

RELEASE,DEBUGオプションも同じようにクリア。

さらに、いったん保存して、.dprojファイル内も検索します。いくつかのパスはdprojファイルに反映されないようなので、メモ帳で直接直します。


プロジェクトマネージャーで右クリックし、ポップアップメニューのインストールをクリックします。

インストールされると、コンポーネントが追加された旨のメッセージが表示されます。




それでは、実際に使用してみましょう。 まずフォームに下図のとおりにコンポーネントを配置します。


Button1のClickイベントハンドラに以下のコードを記述します。 正規表現はちょっと読みにくいので、簡単に説明すると、"(123) ABCDE"という入力が与えられたら括弧内をIDとして取り出し、ABCDEをvalueとして取り出すというものです。なお、括弧と valueの間には空白があっても許容します。


実行してみます。Edit1に入力文字列を入れButton1をクリックします。正しく動作していることが確認できます。


このコンポーネントは以前のDelphiではpcre3.dllを必要としていましたが、Delphi2009ではコンパイル済みのObjファイルをリンクするようになっています。そのため、アプリケーションにDLLを添付する必要はありません。


そのぶん、少しファイルサイズは大きくなるようです。


先ほど作ったプログラムは、日本語を入れても正しく動きます。



著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2008-09-20
iPentec all rights reserverd.