首页 > 其他分享 >delphi 正则表达式

delphi 正则表达式

时间:2023-06-13 16:11:22浏览次数:41  
标签:匹配 string 正则表达式 delphi System RegularExpressions 字符串 Input

正则表达式

代码

匹配

uses
  System.RegularExpressions;

procedure TForm1.Button1Click(Sender: TObject);
var
  vMatch: TMatch;
begin
  //匹配正则表达式
  vMatch := TRegEx.Match('abc123def456', '[0-9]+');
  //匹配成功输出匹配内容
  if vMatch.Success then
  begin
    Memo1.Lines.Add(vMatch.Value);
    //再次匹配
    vMatch := vMatch.NextMatch;
    if vMatch.Success then
      Memo1.Lines.Add(vMatch.Value);
  end;
end;

替换

uses
  System.RegularExpressions;
  
function TForm1.ReplaceNumber(const Match: TMatch): string;
begin
  if Match.Value = '123' then
    Result := '!'
  else if Match.Value = '456' then
    Result := '$'
  else
    Result := '-';
end;  

procedure TForm1.Button2Click(Sender: TObject);
begin
  //替换全部匹配内容
  Memo1.Lines.Add(TRegEx.Replace('abc123def456', '[0-9]+', '-'));
  //复杂替换
  Memo1.Lines.Add(TRegEx.Replace('abc123def456', '[0-9]+', ReplaceNumber));
end;

判断匹配

uses
  System.RegularExpressions;
  
procedure TForm1.Button3Click(Sender: TObject);
begin
  //判断是否存在匹配项
  if TRegEx.IsMatch('abc123def456', '[0-9]+') then
    Memo1.Lines.Add('存在')
  else
    Memo1.Lines.Add('不存在');
end;

拆分字符串

uses
  System.RegularExpressions;
  
procedure TForm1.Button4Click(Sender: TObject);
var
  vArr: TArray<string>;
  I: Integer;
begin
  //根据正则表达式拆分字符串
  vArr := TRegEx.Split('1a2b3c4d5e6f', '[0-9]+');
  for I := 0 to Length(vArr) - 1 do
    Memo1.Lines.Add(vArr[I]);
end;

方法

System.RegularExpressions.TRegEx.Match

class function Match(const Input, Pattern: string): TMatch;
class function Match(const Input, Pattern: string; Options: TRegExOptions): TMatch;

unit

System.RegularExpressions

在输入字符串中搜索第一次出现的正则表达式。

参数

Input 输入字符串。

Pattern 正则表达式。

Options 影响匹配操作。

返回值

一个TMatch实例。

System.RegularExpressions.TMatch

unit

System.RegularExpressions

包含单个正则表达式匹配结果的记录。

没有公共构造函数。由 System.RegularExpressions.TRegEx.Match 等方法构造为返回值,表示字符串中的第一个模式匹配。

Success 属性表示匹配是否成功。

NextMatch 返回下一个匹配项。返回类型也是 TMatch

如果模式匹配成功,Value 属性包含匹配的子字符串,Index 属性包含输入字符串中匹配子字符串从零开始的起始位置,Length 属性包含输入字符串中匹配子字符串的长度。

因为单个匹配可能涉及多个捕获组,所以 TMatch 有一个类型为 TGroupCollectionGroups 属性。

System.RegularExpressions.TRegExOptions

type TRegExOptions = set of TRegExOption;

unit

System.RegularExpressions

正则表达式的规则和功能的选项。是TRegExOption类型的集合。

  • roNone 指定不设置任何选项。

  • roIgnoreCase 指定不区分大小写的匹配。

  • roMultiLine 多行模式。改变^$的含义,使它们分别匹配任何一行的开头和结尾,而不仅仅是整个字符串的开头和结尾。

  • roExplicitCapture 指定唯一有效的捕获是显式命名或编号形式为(?<name>…)的组。这允许未命名的括号充当非捕获组,而不像表达式(?:…)那样语法笨拙。

  • roCompiled 指定将正则表达式编译成一个汇编。这会产生更快的执行速度,但会增加启动时间。调用 CompileToAssembly 方法时,不应将此值分配给 Options 属性。

  • roSingleLine 指定单行模式。改变点(.)的含义,使其与每个字符相匹配(而不是除\n外的每个字符)。

  • roIgnorePatternSpace 消除模式中未转义的空白,并启用标有 # 的注释。但是,忽略模式空白值不会影响或消除字符类中的空白。

System.RegularExpressions.TRegEx.Replace

class function Replace(const Input, Pattern, Replacement: string): string; overload;
class function Replace(const Input, Pattern: string; Evaluator: TMatchEvaluator): string; overload;
class function Replace(const Input, Pattern, Replacement: string; Options: TRegExOptions): string; overload; 
class function Replace(const Input, Pattern: string; Evaluator: TMatchEvaluator; Options: TRegExOptions): string; overload;

unit

System.RegularExpressions

Input 字符串中的所有匹配项替换为 Replacement 字符串或 Evaluator 委托的返回值。

参数

Input 输入字符串。

Pattern 正则表达式。

Replacement 替换字符串。

Evaluator 委托的返回值函数。

Options 影响匹配操作。

返回值

替换后的字符串。

System.RegularExpressions.TRegEx.IsMatch

class function IsMatch(const Input, Pattern: string): Boolean;overload;
class function IsMatch(const Input, Pattern: string; Options: TRegExOptions): Boolean; overload;

unit

System.RegularExpressions

表示输入字符串中是否存在匹配项。

参数

Input 输入字符串。

Pattern 正则表达式。

Options 影响匹配操作。

System.RegularExpressions.TRegEx.Split

class function Split(const Input, Pattern: string): TArray<string>; overload;
class function Split(const Input, Pattern: string; Options: TRegExOptions): TArray<string>; overload;

根据正则表达式的匹配来拆分输入字符串。

参数

Input 输入字符串。

Pattern 正则表达式。

Options 影响匹配操作。

返回值

拆分结果在字符串数组中返回。

参考

Delphi正则表达式类

TPerlRegEx

用于 Delphi 2010 及更早版本

标签:匹配,string,正则表达式,delphi,System,RegularExpressions,字符串,Input
From: https://www.cnblogs.com/txgh/p/17477833.html

相关文章

  • Python正则表达式完全指南
    本篇文章将深入探讨python的一项强大工具:正则表达式。正则表达式是一个强大的文本处理工具,可以用来匹配,搜索,替换和解析文本。我们将逐步展示如何在Python中使用正则表达式,包括其基本语法,常见用法和一些高级技巧。而在最后的“onemorething”部分,我们将探索一个不为人知但又非常......
  • Jmeter-正则表达式提取器
    问题:提取token里面的值,给后面的请求使用一、1、使用正则表达式提取器,将响应数据中的token值提取出来 2、后面请求使用该变量 二、正则表达式书写响应数据:{"access_token":"278462b1-5116-46fb-be43-fe9230dc4d90","token_type":"bearer","refresh_token":"13793a3f-32bd-......
  • Delphi 原生支持DataSet导出Json
    Xalion发现data.DBJson单元,不知什么时候加的,官方帮助中也没有写。procedureTForm18.Button2Click(Sender:TObject);varcV:TDatasetToJSONBridge;jo:Tjsonobject;begincV:=TDatasetToJSONBridge.Create;trycV.Dataset:=mt;jo:=Tjsonobject(cV.......
  • delphi通过TNetHttpClient监测小红书笔记有无新增评论
    一、实现原理及步骤 每隔一定时间间隔(比如2分钟),抓取特定笔记ID的全部评论,统计出评论数量及子评论数量,与前一次抓取的数量比较,如数量增加,说明有新增评论。然后通过排序评论,找出最新添加的评论。二、技术要点1、评论接口https://edith.xiaohongshu.com/api/sns/web/v2/comment......
  • Delphi FASTreport 4 自动补空行的方法
    写了一个比较简单易懂易调试的补空行的方法在masterdata的OnAfterPrint加入事件procedureMasterData1OnAfterPrint(Sender:TfrxComponent);vari,j,k,hh:integer;  hs:string;  //当前行数begini:=1;hh:=18;  //数据页每页行数j:=MasterData1.dataset.recor......
  • delphi 调用youtube-dl命令,下载youtube视频,原理及源代码
    一、概要1、Youtube-dl工具 强大的视频下载命令行工具Youtube-dl项目由RicardoGarcia创建于2008年,源代码由Python编写,托管在GitHub上,最初仅支持YouTube,但随着项目的发展,也开始支持其他视频网站,优势在于使用简单、功能齐全、体积小巧,但唯一遗憾的是国内使用需要开启代理。可......
  • [IOS]开源库RegexKitLite正则表达式的使用
    1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。2.工程中添加libicucore.dylibframeworks。友情提醒:一般人导入RegexKitLite编译报错,正是因为没有导入这个类库,加上这个就OK了3.现在所有的nsstring对象就可以调用RegexKitLite中......
  • 将字符串里的\x01,\x02这些替换掉用正则表达式无效?
    大家好,我是皮皮。一、前言前几天在Python白银群【凡人不烦人】问了一个Python正则表达式的问题,这里拿出来给大家分享下。将字符串里的\x01,\x02这些替换掉用my_str=re.sub(r'\x0d','',my_str)这个结果不对,是什么原因呢?他的原始文档如下所示:看上去没有看到特殊二进制字符。二、......
  • Python正则表达式常用flag含义与用法详解
    Python正则表达式模块re中很多函数都支持一个flag参数,用来对正则表达式进行补充说明,例如findall(pattern,string,flags=0)match(pattern,string,flags=0)search(pattern,string,flags=0)sub(pattern,repl,string,count=0,flags=0)split(pattern,string,maxsplit=0,fla......
  • 正则表达式
    正则表达式,又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达......