程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 官方的正則表達式組件 RegularExpressions (1) : 基本應用

官方的正則表達式組件 RegularExpressions (1) : 基本應用

編輯:Delphi

 剛剛試了一下 DelphiXE 新增的正則表達式組件, 它基於 C 語言編寫的 PCRE 庫實現, 感覺設計的非常好。

  其主要的 TRegEx 被設計為一個結構(而不是類), 可能是基於效率的考慮;不過它主要調用了 TPerlRegEx 類的功能。

  TRegEx 的五個主要方法 IsMatch()、Match()、Matches()、Replace()、Split() 都有相應的 class 方法,

  所以一般情況下根本不需要手動實例化對象,直接使用 class 方法就夠了。

  另:關於表達式語法可參加 Perl 5 的相關介紹。

 uses RegularExpressions; //相關單元 
 
const 
  pattern = '[A-Z]+\d+';                      //測試用的表達式 
  txt = 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; //測試用的目標文本 
 
{是否匹配成功} 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if TRegEx.IsMatch(txt, pattern) then 
  begin 
    ShowMessage('有匹配到'); 
  end; 
end; 
 
{獲取第一個匹配結果} 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  match: TMatch; 
begin 
  match := TRegEx.Match(txt, pattern); 
  if match.Success then //或用一句話 if TRegEx.Match(txt, pattern).Success then 
  begin 
    ShowMessage(match.Value); //AAA1 
  end; 
end; 
 
{獲取所有匹配結果} 
procedure TForm1.Button3Click(Sender: TObject); 
var 
  matchs: TMatchCollection; 
  match: TMatch; 
  i: Integer; 
begin 
  matchs := TRegEx.Matches(txt, pattern); 
 
  Memo1.Clear; 
  for match in matchs do 
  begin 
    Memo1.Lines.Add(match.Value); 
  end; 
 
  Memo1.Lines.Add('----------'); 
  for i := 0 to matchs.Count - 1 do 
  begin 
    Memo1.Lines.Add(matchs[i].Value); 
  end; 
end; 
 
{使用 TMatch 對象的 NextMatch 遍歷匹配結果時,需實例化對象} 
procedure TForm1.Button4Click(Sender: TObject); 
var 
  reg: TRegEx; 
  match: TMatch; 
begin 
  reg := TRegEx.Create(pattern); 
  match := reg.Match(txt); 
 
  Memo1.Clear; 
  while match.Success do 
  begin 
    Memo1.Lines.Add(match.Value); 
    match := match.NextMatch; 
  end; 
end; 
 
{替換} 
procedure TForm1.Button6Click(Sender: TObject); 
begin 
  Memo1.Text := TRegEx.Replace(txt, pattern, 'xxx'); //xxx xxx xxx xxx xxx xxx AAAA 
end; 
 
{分割} 
procedure TForm1.Button7Click(Sender: TObject); 
var 
  rArr: TArray<string>; 
  s: string; 
begin 
  rArr := TRegEx.Split('AAA,BBB;CCC,DDD EEE', '[,; ]'); 
 
  Memo1.Clear; 
  for s in rArr do 
  begin 
    Memo1.Lines.Add(s); //AAA/BBB/CCC/DDD/EEE 
  end; 
end; 
 
{TRegEx 還有一個 class 方法 Escape, 用於給特殊字符轉義} 
procedure TForm1.Button8Click(Sender: TObject); 
begin 
  Memo1.Text := TRegEx.Escape('\[]^$.|?*+(){}'); //: \\\[\]\^\$\.\|\?\*\+\(\)\{\} 
end; 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved