首页 > 其他分享 >delphi 正则表达式的使用方法

delphi 正则表达式的使用方法

时间:2022-10-14 19:01:11浏览次数:53  
标签:begin 匹配 正则表达式 delphi TRegEx matches match 方法 Match

本文写于2022-10-14,D版本10.3.3

引用单元:

uses
  System.RegularExpressions

1、TRegEx.Match方法

Match()方法总是获取满足条件的第一个匹配,而不关心满足条件的匹配有多少个。

Match()方法都回一个Match对象,其中包含了匹配的各种细节.

Match()方法的取值方法

var

  m:TMatch;

begin

  m := TRegEx.Match('a1a2','\d');

  showmessage(m.groups.item[0].value);  //只能是0啊,因为它只取第一个匹配值.反过来,如果它一个都没有匹配到的话,连0都没了

end;

所以,一般地,当我们确定只有一个符合条件的匹配或只需要第一个符合条件的匹配时,可以使用Match()。

可以使用TMatch的NextMatch方法获取下一个匹配的字符串:

  m:= m.NextMatch;

可以使用TMatch的Groups属性获取与分组的正则表达式匹配的字符串。

var
  match: TMatch;
  group: TGroup;
begin
  match := TRegEx.Match('2012/5/14', '(\d+)/(\d+)/(\d)');
  ShowMessage(IntToStr(match.Groups.Count)); //=> 4

  for group in match.Groups do
  begin
    ShowMessage(Format('%s (%d, %d)',
      [group.Value, group.Index, group.Length]));
  end;
  (* 結果
  2012/5/1 (1, 8)
  2012 (1, 4)
  5 (6, 1)
  1 (8, 1)
  *)

 

2、TRegEx.IsMatch方法

  isMatch()方法用于判断是否能匹配到符合条件的成员,返回一个Boolean值.

  TRegEx.Match('aAA','\d');    //返回false;

  TRegEx.Match('aAA','\w');    //返回true;

3、TRegEx.Matches方法 获取与正则表达式匹配的所有字符串.

  Matches()方法可以得到MathCollection对象的一个集合。这个集合类中包含每一次正则表达式匹配的Match对象。

  TRegEx.Match的声明是:

    M:TMatch;

  而TRegEx.Matches声明的是:

    MC:TMatchCollection;

  一般,当我们需要获取所有符合条件的匹配结果时,可以使用Matches()。

实例1:

procedure TForm2.Button1Click(Sender: TObject);
var
  mc: TMatchCollection;
  pattern, str: string;
  i: Integer;
begin
  pattern := Edit2.Text;   //正则规则
  str := edit1.Text;
  if TRegEx.IsMatch(str, pattern) then
  begin
    if CheckBox1.Checked  then
      mc := TRegEx.Matches (str, pattern,[roMultiLine]) //区分大小写
    else
      mc := TRegEx.Matches (str, pattern,[roIgnoreCase]); //默认忽略大小写,所以这里可以省略第三参数
    Memo1.Clear;
    for i := 0 to mc.Count   - 1 do
    begin
      Memo1.Lines.Add(mc.Item[i].Value);
    end;
  end;
end;

 

 

 

 

 实例2:

var
  match: TMatch;
  matches: TMatchCollection;
begin
  matches := TRegEx.Matches('Delphi XE', '[A-Z]+');
  ShowMessage(IntToStr(matches.Count));

  match := matches.Item[0];
  ShowMessage(
    Format('%s (%d, %d)',
      [match.Value, match.Index, match.Length])); //=> D (1, 1)

  match := matches.Item[1];
  ShowMessage(
    Format('%s (%d, %d)',
      [match.Value, match.Index, match.Length])); //=> XE (8, 2)
Matches方法支持in do。

var
  regex: TRegEx;
  match: TMatch;
  matches: TMatchCollection;
begin
  regex := TRegEx.Create('[A-Z]+');
  matches := regex.Matches('Delphi XE');
  ShowMessage(IntToStr(matches.Count)); 

  for match in matches do
    ShowMessage(
      Format('%s (%d, %d)',
        [match.Value, match.Index, match.Length]));
4.TRegEx.Replace方法替换 与正则表达式匹配的字符串
s := TRegEx.Replace('Delphi XE', '[A-Z]', '_');  //=> _elphi __  

 

 5.TRegEx.Split拆分方法 拆分字符串

var
  splits: TArray<string>;
  s: string;
begin
  splits := TRegEx.Split('Delphi C++Builder/RadPHP', '[ /]');
  for s in splits do
    Memo1.Lines.Add(s);
6.TRegEx.Escape转义方法转义 特殊字符
var
  s: string;
begin
  s := TRegEx.Escape('C++');
  ShowMessage(s); //=> C\+\+

 


验证正则表达式语法 如果在构造函数参数中指定了roCompiled,则将编译正则表达式。 如果正则表达式有问题,则引发异常。  
try
  TRegEx.Create(Edit1.Text, [roCompiled]);
except on E: Exception do
  ShowMessage(E.Message);
end;

 


 

 


 

 

 

标签:begin,匹配,正则表达式,delphi,TRegEx,matches,match,方法,Match
From: https://www.cnblogs.com/yoooos/p/16792657.html

相关文章

  • 函数的内置方法
    今日内容回顾重要内置函数常见内置函数可迭代对象迭代器对象for循环的本质异常捕获/处理今日内容详解重要内置函数1.zip:拉链,可以把多个列表里的数据一一对应组......
  • A-卷积网络压缩方法总结
    卷积网络压缩方法总结卷积网络的压缩方法一,低秩近似二,剪枝与稀疏约束三,参数量化四,二值化网络五,知识蒸馏六,浅层网络我们知道,在一定程度上,网络越深,参数越多,模型越......
  • 7. CSS颜色设置(6种方法)
    1.前言我们在显示屏上看到的各种颜色都是通过红(red)、绿(green)、蓝(blue)三原色组合而成的,按不同的比例混合这三种颜色就可以得到其它颜色,通过调整红、绿、蓝三种颜色的数值......
  • 笔记本电脑做显示器控制服务器的方法说明
    远程控制服务器--以海光服务器为例作者:jianmuzi一、BIOS配置MGT管理口IP1)进入需要控制的服务器的BIOSSetup>ServerMgmt>BMCNetworkConfiguration2)在De......
  • 【Xsell】根目录空间满解决方法
    磁盘根目录占用率100%df-lh查看结果  解决方法情况1:删除或清空大文件切换根目录cd/  查看文件大小按文件大小降序排列ll-hS  按文......
  • 一种实现文件定期删除方法
    需求:实现文件过期自动删除。大致思路:1、获取文件time2、跟当前时间做比较3、删除知识点:获取文件time方法?linux可以通过stat方法查看文件的时间,但是会发现有三......
  • 保护香港服务器的方法
    保护香港服务器的方法当你把一个香港服务器完全留给一个组织、应用程序或个人使用时,它被称为香港服务器租用。在这种类型的主机配置中,客户端将会借出整个服务器,并且不允许......
  • 保护香港服务器的方法
    保护香港服务器的方法当你把一个香港服务器完全留给一个组织、应用程序或个人使用时,它被称为香港服务器租用。在这种类型的主机配置中,客户端将会借出整个服务器,并且不允许......
  • 加日志的使用方法
    #-*-coding:utf-8-*-#@Author:107#@File:logdriver.py#@explain:日志importloggingimportlogging.configimportosimporttimeclassLogDr......
  • 方法里面的可变参数
    publicstaticvoidmain(String[]args){userRegist("admin","1243","江西");}//可变参数,一个方法里面只有一个可变参数不能有其他参数,且......