正規表現(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;
「あいう」が出力される