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を愛用