官方的正则表达式组件 RegularExpressions (4) : 表达式选项


TRegExOption = (roNone,              //无roIgnoreCase,        //不区分大小写roMultiLine,         //多行模式; 可使 ^ 和 $ 匹配每个行首或行尾roExplicitCapture,   //只捕获指定了名称或编号的子表达式roCompiled,          //预编译表达式; 这在反复使用更有效率roSingleLine,        //单行模式; 使 . 也可匹配换行符roIgnorePatternSpace //忽略注释和未经转义的空白
);


uses RegularExpressions;{roIgnoreCase}
procedure TForm1.Button1Click(Sender: TObject);
constpattern = '[A-Z]+\d+';txt = 'AAA1 bbb2 aa11 bb22 A111 B222 AAAA';
varmatch: TMatch;
beginMemo1.Clear;for match in TRegEx.Matches(txt, pattern, [roIgnoreCase]) dobeginMemo1.Lines.Add(match.Value);end;Memo1.Lines.Add('----------');for match in TRegEx.Matches(txt, pattern) dobeginMemo1.Lines.Add(match.Value);end;
end;
{*********************
AAA1
bbb2
aa11
bb22
A111
B222
----------
AAA1
A111
B222
**********************}{roMultiLine}
procedure TForm1.Button2Click(Sender: TObject);
consttxt = 'Delphi Delphi Delphi'#13#10'Delphi Delphi Delphi';
varrStr: string;
beginMemo1.Clear;{行首}rStr := TRegEx.Replace(txt, '^Delphi', '......', [roMultiLine]);Memo1.Lines.Add(rStr);Memo1.Lines.Add('--------------------');rStr := TRegEx.Replace(txt, '^Delphi', '......');Memo1.Lines.Add(rStr);Memo1.Lines.Add('--------------------');{行尾}rStr := TRegEx.Replace(txt, 'Delphi$', '......', [roMultiLine]);Memo1.Lines.Add(rStr);Memo1.Lines.Add('--------------------');rStr := TRegEx.Replace(txt, 'Delphi$', '......');Memo1.Lines.Add(rStr);
end;
{*********************
...... Delphi Delphi
...... Delphi Delphi
--------------------
...... Delphi Delphi
Delphi Delphi Delphi
--------------------
Delphi Delphi ......
Delphi Delphi ......
--------------------
Delphi Delphi Delphi
Delphi Delphi ......
**********************}{roExplicitCapture}
procedure TForm1.Button3Click(Sender: TObject);
constpattern1 = '([A-Z]+)(\d+)';pattern2 = '(?<name1>[A-Z]+)(\d+)';pattern3 = '([A-Z]+)(?<3>\d+)';txt = 'AA11 BB22';
varmatch: TMatch;group: TGroup;
beginMemo1.Clear;for match in TRegEx.Matches(txt, pattern1, [roExplicitCapture]) do beginfor group in match.Groups dobeginMemo1.Lines.Add(group.Value);end;end;Memo1.Lines.Add('--------------------');for match in TRegEx.Matches(txt, pattern1) do //此处把 pattern1 换做 pattern2 或 pattern3 均可beginfor group in match.Groups dobeginMemo1.Lines.Add(group.Value);end;end;Memo1.Lines.Add('--------------------');for match in TRegEx.Matches(txt, pattern2, [roExplicitCapture]) do beginfor group in match.Groups dobeginMemo1.Lines.Add(group.Value);end;end;Memo1.Lines.Add('--------------------');for match in TRegEx.Matches(txt, pattern3, [roExplicitCapture]) do beginfor group in match.Groups dobeginMemo1.Lines.Add(group.Value);end;end;
end;
{*********************
AA11
BB22
--------------------
AA11
AA
11
BB22
BB
22
--------------------
AA11
AA
BB22
BB
--------------------
AA11
11
BB22
22
**********************}{roCompiled}
procedure TForm1.Button4Click(Sender: TObject);
varreg: TRegEx;
beginreg := TRegEx.Create('\d+', [roCompiled]);Memo1.Text := reg.Replace('AA11 BB22', '..');  //AA.. BB..
end;{roSingleLine}
procedure TForm1.Button5Click(Sender: TObject);
const           pattern = '[A-Z]{1}.{1}';txt = 'A B C D'#13#10'A B C D'#13#10'A B C D';
varrStr: string;
beginMemo1.Clear;rStr := TRegEx.Replace(txt, pattern, '11', [roSingleLine]);Memo1.Lines.Add(rStr);Memo1.Lines.Add('--------------------');rStr := TRegEx.Replace(txt, pattern, '11');Memo1.Lines.Add(rStr);
end;
{*********************
11111111
11111111
111111D
--------------------
111111D
111111D
111111D
**********************}{roIgnorePatternSpace}
procedure TForm1.Button6Click(Sender: TObject);
varrStr: string;
beginMemo1.Clear;{忽略空白}                                rStr := TRegEx.Replace('ABC,A B C,AB C', 'AB C', '...', [roIgnorePatternSpace]);Memo1.Lines.Add(rStr); //...,A B C,AB CrStr := TRegEx.Replace('ABC,A B C,AB C', 'AB C', '...');Memo1.Lines.Add(rStr); //ABC,A B C,...Memo1.Lines.Add('--------------------');{使用注释}rStr := TRegEx.Replace('ABC123', 'ABC#*123', '...', [roIgnorePatternSpace]);Memo1.Lines.Add(rStr); //...123rStr := TRegEx.Replace('ABC123', 'ABC#*123', '...');Memo1.Lines.Add(rStr); //...
end;
{*********************
...,A B C,AB C
ABC,A B C,...
--------------------
...123
...
**********************}{选项集合}
procedure TForm1.Button7Click(Sender: TObject);
constpattern = '^Delphi';txt = 'DELPHI DELPHI DELPHI'#13#10'delphi delphi delphi';
beginMemo1.Text := TRegEx.Replace(txt, pattern, '......', [roIgnoreCase, roMultiLine]);
end;
{*********************
...... DELPHI DELPHI
...... delphi delphi
**********************}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章,带你了解 “机器学习工程师” 必备技能图谱

5月8日&#xff0c;谷歌召开一年一度的Google I/O大会。在现场演示的演示中&#xff0c;Google Assistant表现得自然流畅&#xff0c;电话那头的理发店员工丝毫没有察觉到自己竟然是在和AI对话&#xff01;阿里的王坚博士曾在一次主题演讲里谈到&#xff1a;「不要担心 AI 毁灭…

俄语使用计算机怎么说,计算机俄语常用词汇

计算机俄语常用词汇аксессуары 附件микрофон 话筒наушники 耳机MIDI клавиатура MIDI键盘MP3 плеер MP3播放器очки 眼镜иктофон 录音机ержатель копий 拷贝存放夹Принтеры 打印机матричный…

一日一技:在Ocelot网关中实现IdentityServer4密码模式(password)

概述IdentityServer4 是为ASP.NET Core 2.系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证框架。将identityserver部署在你的应用中&#xff0c;具备如下的特点可以为你的应用&#xff08;如网站、本地应用、移动端、服务&#xff09;做集中式的登录逻辑和工作流控制…

uibot在子程序执行js失败_使用 Node.js 将珍藏的 bash 脚本封装成命令行工具

阐述如何将一个常用的 bash 脚本融入 npm 生态之中&#xff0c;此处以最近遇到的一个 CR 提交脚本为例。背景作为程序猿&#xff0c;大家或多或少地都用过 GitHub 上的 merge request 功能。当然&#xff0c;除了这类 Code Review 方式&#xff0c;不少公司都有自己的 Code Rev…

Insus Binary Utility

一个将数据流转换为binary(二进制)数据小工具&#xff0c;返回字符串。可以在三层架构中的二层程序处理数据流。 使用时需要引用名称空间using Insus.NET; 类别名称InsusBinaryUtility&#xff0c;需要实例化。 下载地址&#xff1a;http://download.cnblogs.com/insus/library…

圆周率里有每个人的银行卡密码和生日?混知乎的程序员果然都是神一般的存在...

有人好奇&#xff0c;既然圆周率是无限不循环小数&#xff0c;会不会包括这个世界上的任何信息&#xff0c;包含了这个世界&#xff1f;能否包含“任何信息”不好说&#xff0c;但一个冷知识是&#xff0c;圆周率里有每个人的银行卡密码&#xff01;不信&#xff1f;看看这位来…

如何提高Debug效率

大家好&#xff0c;我是Z哥。可以不夸张地说&#xff0c;程序员可能有一半的时间都在修bug。虽说&#xff0c;根据28原则大部分bug都可以在搜索引擎上搜到&#xff08;业务性bug除外&#xff09;&#xff0c;但是往往剩下的那20%bug会花费我们80%的时间。虽然解决这个问题最好的…

中断原理在计算机中的应用,最新 计算机原理与应用 复习3-判断题

最新 计算机原理与应用 复习题目1.INTR、INTA和NMI信号都是与中断有关的信号。( ) √2.8088在访问存储器时&#xff0c;必须用HOLD和HLDA两条信号线指示出总线是否可用。( )3.在8088时序中&#xff0c;在时钟周期T4状态期间&#xff0c;S2S1S0的任何变化指示一个总线周期的开始…

baidumap vue 判断范围_懂一点前端—Vue快速入门

01. 什么是 VueVue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架&#xff0c;是当下很火的一个 JavaScript MVVM 库&#xff0c;是以 数据驱动和组件化 的思想构建的。MVVM 模式简述下图不仅概括了 MVVM 模式 (Model-View-ViewModel)&#xff0c…

open*** 结合pam_mysql认证 failed to authenticate: Permission denied

open***的认证有很多方式&#xff0c;比如证书认证&#xff0c;用户名密码认证&#xff0c;而用户名密码认证也可用通过两种方式实现&#xff0c;一是使用pam_mysql实现open***利用mysql认证&#xff0c;二是使用radius实现open***利用mysql认证&#xff0c;网上这种配置都很多…

用文本挖掘剖析近5万首《全唐诗》,发现了这些有趣的秘密

楔子近些年来&#xff0c;弘扬中华传统文化的现象级综艺节目不断涌现&#xff0c;如《中国汉字听写大会》、《中国成语大会》、《中国谜语大会》、《中国诗词大会》等&#xff0c;其背后的社会成因&#xff0c;在于人们对中国文化中最精致文字的膜拜心理&#xff0c;虽然浸淫于…

如何在 C#9 中使用顶级程序 (top-level)

当我们用 C# 进行编码的时候&#xff0c;总需要写很多的模板代码&#xff0c;即使是最简单的 console 程序,想象一下&#xff0c;如果去测试一个 类库 或者 API 的功能&#xff0c;通常你会用 Console 程序去实现&#xff0c;在开始工作的时候会发现你受到了 C# 标准模板的限制…

跨部门不配合工作_跨部门协作,队友总是“甩锅”,这三个方法教你快速避坑!...

在日常的工作中&#xff0c;你觉得跨部门沟通的时间占用了多少时间&#xff1f;前阵子我经常会看到有人抱怨&#xff0c;说跨部门沟通的工作实在太难了&#xff0c;同事总是推脱扯皮&#xff0c;领导交代下来的事情&#xff0c;要么说不是自己的职责&#xff0c;要么说以前没做…

web页面在线编辑功能

首先在web.config文件中添加 <system.web> <httpHandlers> <add verb"GET" path"FtbWebResource.axd" type"FreeTextBoxControls.AssemblyResourceHandler,FreeTextBox"/> </httpHandlers></system.web> 注…

html哪个是最大标题,在下面的HTML中,哪个是最大的标题( )

参考答案如下下中单选(2分) 新民主主义革命的三大法宝是( )单选(2分) 关于计算机为什么基于二进制数来实现&#xff0c;标题下列说法不正确的是单选(3分) “某些人天生具有一些特质&#xff0c;下中这些特质会使他们成为伟大的领导者。”这是以下哪种理论的观点?标题单选(3分)…

C#通过工厂模式,我把一大堆if干掉了

概述之前做微信项目的时候&#xff0c;会涉及到一个回调&#xff0c;大家都知道回调事件是很多类型的&#xff0c;一般是根据不同的类型在进行不同的逻辑处理。这样就会延伸出一个问题&#xff0c;就是入口处会有一大堆if判断。这样本身是没什么问题的&#xff0c;只是看起来比…

再过四十年,你的女朋友可能是个美丽的机器人!不信你看

“美国西部、科幻、人工智能 、 机器人革命”&#xff0c;这 4 个看似不相关的元素却组成了一部新神剧《西部世界&#xff1a;Westworld》。《西部世界》可是聚粉丝千万&#xff0c;由1973年迈克尔克里奇顿执导的同名电影改编而成的电视剧。在剧中&#xff0c;整个“西部世界”…

mac下nvm_Mac OS 使用 nvm 管理 node 与 npm 版本

nvm 是 Mac 下的 node 管理工具&#xff0c;有点类似管理 Ruby 的 rvm&#xff0c;如果是需要管理 Windows 下的 node&#xff0c;官方推荐是使用 nvmw 或 nvm-windows 。以下具体说下 Mac 系统中的安装与使用细节(Windows 系统仅供类比参考)。1. 卸载已安装到全局的 node/npm如…

如何解决ORA-12638: 身份证明检索失败错误

今天连接一个以前正常连接的Oracle数据库&#xff0c;突然报错ORA-12638&#xff0c;说身份证明检索失败。感觉很奇怪&#xff0c;后来一查&#xff0c;发现是因为我电脑是出于Windows的Domain中的&#xff0c;而sqlnet文件中指定的认证方式是MTS&#xff0c;所以出错了。 解决…

模型存储在哪里_最强的模型工作收纳站「Artty Station」登场!

大部分做模型的人&#xff0c;都有同一个梦想——那就是「属于自己的模型空间」。但很少有人&#xff0c;有足够的空间去收纳自己的模型工具。而现在&#xff0c;一款号称史上最强的模型收纳站「Artty Station」横空出世了&#xff0c;现在正在日本网站Makuake上进行众筹&#…