ID499896465

Delphi 正则表达式 RegularExpressions 的使用。

必须 uses RegularExpressions; //相关单元


以下大部分都引自万一博客。


TRegEx.Split() // 使用正则表达式切割字符串;

********************************************************************************

const

  // 分隔符将有三部分构成: 一个数字, 一个冒号, 一个空格

  FSourceText = '1: AAA 2: BBB 3: CCC';

var

  Arr: TArray<string>;

   str: string;

procedure TForm1.Button1Click(Sender: TObject);

begin

  Arr := TRegEx.Split(FSourceText, '\d: '); // 用\d数字和冒号:外加空格的组合来切割上面的字符串。

//如果上面的语句修改为:

//Arr := TRegEx.Split(FSourceText, '(\d): '); //括号中的部分被当做分割后的元素//如果有两个括号, 取后面括号的内容做元素,前面的括号无效,如:'(\d)(:)( )'只取空格,'(\d)(:) '则只取冒号;

//则得到结果2.

  Memo1.Clear;

  for str in Arr do

    Memo1.Lines.Add(str);

  { 得到的结果1:

    AAA

    BBB

    CCC

  }

  { 得到的结果2:

    1                        <-----被 (括号)切割后的元素,也作为结果之一。

    AAA

    2

    BBB

    3

    CCC

  }

end;

============================================================


TRegEx.IsMatch //匹配字符串是否相符;

****************************************************

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;

============================================================


使用TRegEx.IsMatch 匹配获取第一个匹配结果

***************************************************************

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 ,使用 match.Value 获取结果。

      end

end;

============================================================




评论