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

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

PCRE-based Components for Delphi for Windows/Win32 の欄から TPerlRegEx をダウンロードします
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像3

適当なディレクトリに中身を展開します。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像4

PerlRegExD2009.dproj を読み込みます。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像5

デフォルトでは出力先が変なパスになっているので修正します。プロジェクトオプションを開いて、出力パスをチェックします。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像6

全部クリアしました。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像7

RELEASE,DEBUGオプションも同じようにクリア。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像8

さらに、いったん保存して、.dprojファイル内も検索します。いくつかのパスはdprojファイルに反映されないようなので、メモ帳で直接直します。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像9

プロジェクトマネージャーで右クリックし、ポップアップメニューのインストールをクリックします。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像10
インストールされると、コンポーネントが追加された旨のメッセージが表示されます。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像11



それでは、実際に使用してみましょう。 まずフォームに下図のとおりにコンポーネントを配置します。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像12

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

実行してみます。Edit1に入力文字列を入れButton1をクリックします。正しく動作していることが確認できます。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像14

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

そのぶん、少しファイルサイズは大きくなるようです。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像16

先ほど作ったプログラムは、日本語を入れても正しく動きます。
TPerlRegEx (PCRE 正規表現コンポーネント) を利用する:画像17


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