正規表現(TRegExでマッチ,置換)の使い方 ~Delphiソースコード集

検索:

正規表現(TRegExでマッチ,置換)の使い方 ~Delphiソースコード集

uses System.RegularExpressions;
が必要です。

大文字小文字を区別しないで正規表現にマッチ(一致)するか調べる

'delphi'の文字列が、大文字小文字を区別しない正規表現'[A-Z]'にマッチするかどうかを調べる。
uses System.RegularExpressions;

procedure TForm1.Button1Click(Sender: TObject);
var opt:TRegExOptions;
begin
  //大文字小文字を区別しないオプションを設定する
  opt:=[roSingleLine,roIgnoreCase];
  if TRegEx.IsMatch('delphi','[A-Z]',opt) then
    Memo1.Lines.Add('マッチする')
  else
    Memo1.Lines.Add('マッチしない')
end;
「マッチする」が出力される

大文字小文字を区別して正規表現にマッチ(一致)するか調べる

'delphi'の文字列が、大文字小文字を区別する正規表現'[A-Z]'にマッチするかどうかを調べる。
uses System.RegularExpressions;

procedure TForm1.Button2Click(Sender: TObject);
var opt:TRegExOptions;
begin
  //大文字小文字を区別する
  opt:=[roSingleLine];
  if TRegEx.IsMatch('delphi','[A-Z]',opt) then
    Memo1.Lines.Add('マッチする')
  else
    Memo1.Lines.Add('マッチしない');
end;
「マッチしない」が出力される

正規表現にマッチ(一致)した箇所の文字列を出力する

'<p>あ</p><a>い</a><p>う</p><a>えお</a>'の文字列が、 正規表現'<p>.*?</p>'にマッチした箇所の文字列を出力する。
uses System.RegularExpressions;

procedure TForm1.Button3Click(Sender: TObject);
var opt:TRegExOptions;
    mm:TMatchCollection;
    m:TMatch;
begin
  //大文字小文字を区別しないオプションを設定する
  opt:=[roSingleLine,roIgnoreCase];
  mm:=TRegEx.Matches(
    '<p>あ</p><a>い</a><p>う</p><a>えお</a>',
    '<p>.*?</p>',
    opt
  );
  for m in mm do
    Memo1.Lines.Add(m.Value);
end;
「<p>あ</p>
<p>う</p>」
が出力される

正規表現にマッチ(一致)した箇所の丸括弧を使ったグループの文字列を出力する

'<p>あ</p><a>い<br>うえ</a><p>おか</p><a>きくけ<br>こ</a>'の文字列が、 正規表現'<a>(.*?)<br>(.*?)</a>'にマッチした箇所のグループの文字列を出力する。
uses System.RegularExpressions;

procedure TForm1.Button4Click(Sender: TObject);
var opt:TRegExOptions;
    mm:TMatchCollection;
    m:TMatch;
    i:integer;
begin
  //大文字小文字を区別しないオプションを設定する
  opt:=[roSingleLine,roIgnoreCase];
  mm:=TRegEx.Matches(
    '<p>あ</p><a>い<br>うえ</a><p>おか</p><a>きくけ<br>こ</a>',
    '<a>(.*?)<br>(.*?)</a>',
    opt
  );
  for m in mm do
    for i:=1 to m.Groups.Count-1 do
      Memo1.Lines.Add(m.Groups.Item[i].Value);
end;
「い
うえ
きくけ
こ」
が出力される


正規表現にマッチ(一致)した文字列を置換する

文字列 '<p>あ</p><a>い</a><p>う</p>' の 正規表現'<.*?>'にマッチした箇所を''(何もない文字列)に置換する(削除する)。
uses System.RegularExpressions;
procedure TForm1.Button5Click(Sender: TObject);
var opt:TRegExOptions;
begin
  opt:=[roSingleLine];
  Memo1.Lines.Add(
    TRegEx.Replace(
      '<p>あ</p><a>い</a><p>う</p>',
      '<.*?>',
      '',
      opt
    )
  );
end;
「あいう」が出力される