TGroupとTRegExを利用した文字列処理 - Delphi XE

Groupを使った正規表現文字列処理をしてみましょう。

こちらで作成したフォームにボタンを更にひとつ追加します。


Button2のClickイベントに下記コードを記述します。
procedure TForm1.Button2Click(Sender: TObject);
var
  reg:TRegEx;
  match:TMatch;
  group:TGroup;
begin
  reg:=TRegEx.Create('val\((?<value?>.*?)\)');
  match:=reg.Match(Edit1.Text);
  group:=match.Groups.Item['value'];

  Edit2.Text:= group.Value;
end;
プログラムを実行し、上部のテキストボックス(Edit1)に "TTC val(240)"と入力し、Button2をクリックした結果が下図になります。valの後ろの括弧で囲まれた中の内容を抜き出して下部のテキストボックス(Edit2)に表示しています。


プログラムのコード

Unit1.pas

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RegularExpressions, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  reg:TRegEx;
  match:TMatch;
begin
  reg:=TRegEx.Create('delphi');
  match:=reg.Match(Edit1.Text);
  Edit2.Text:= IntToStr(match.Index);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  reg:TRegEx;
  match:TMatch;
  group:TGroup;
begin
  reg:=TRegEx.Create('val\((?<value?>.*?)\)');
  match:=reg.Match(Edit1.Text);
  group:=match.Groups.Item['value'];

  Edit2.Text:= group.Value;
end;

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