Delphi 正则表达式语法(2): 或者与重复
- // | 号的使用, | 是或者的意思
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'CodeGear Delphi 2007';
- reg.RegEx := 'e|Delphi|0'; //使用了 | 记号
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: Cod◆G◆ar ◆ 2◆◆7
- FreeAndNil(reg);
- end;
- // + 的使用, + 是重复 1 个或多个
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'ab+'; //使用了 + 记号, 这里是允许 a 后面有 1 个或多个 b
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: a aa aaa aaaa ◆ ◆ ◆a a呀a
- FreeAndNil(reg);
- end;
- // * 的使用, * 是重复 0 个或多个
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'ab*'; //使用了 * 记号, 这里是允许 a 后面有多个或者没有 b
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆ ◆ ◆◆ ◆呀◆
- FreeAndNil(reg);
- end;
- // ? 的使用, ? 是重复 0 个或 1 个
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'a?'; //使用了 ? 记号
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆b ◆bb ◆bbb◆ ◆呀◆
- FreeAndNil(reg);
- end;
- //大括号的使用<1>, 指定重复数
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'a{3}'; //这里指定重复 3 次
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: a aa ◆ ◆a ab abb abbba a呀a
- FreeAndNil(reg);
- end;
- //大括号的使用<2>
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'a{2,4}'; //这里指定重复 2-4 次
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: a ◆ ◆ ◆ ab abb abbba a呀a
- FreeAndNil(reg);
- end;
- //大括号的使用<3>
- var
- reg: TPerlRegEx;
- begin
- reg := TPerlRegEx.Create(nil);
- reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
- reg.RegEx := 'a{1,}'; //n 个或多个, 这里是 1 个或多个
- reg.Replacement := '◆';
- reg.ReplaceAll;
- ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆呀◆
- FreeAndNil(reg);
- end;
- //上面这个 {1,} 和 + 是等效的;
- //还有 {0,1} 与 ? 是等效的;
- //{0,} 和 * 是等效的
Delphi 正则表达式语法(2): 或者与重复的更多相关文章
- Delphi 正则表达式语法(10): 选项
Delphi 正则表达式语法(10): 选项 // preCaseLess: 不区分大小写, 相当于其他语言中的 i var reg: TPerlRegEx; begin reg := TPe ...
- Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"
Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边 var reg: TPerlRegEx; begin ...
- Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用 //准备: 我们先写一个搜索所有英文单词的表达式 var reg: TPerlRegEx; begin reg := TP ...
- Delphi 正则表达式语法(7): 匹配转义字符
Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var reg: TPerlRegEx; begin reg := TPe ...
- Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配
Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); ...
- Delphi 正则表达式语法(5): 边界
Delphi 正则表达式语法(5): 边界 // \b 单词边界 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg ...
- Delphi 正则表达式语法(4): 常用转义字符与 .
Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] var reg: TPerlRegEx; begin reg := TPerlRegE ...
- Delphi 正则表达式语法(3): 匹配范围
Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(n ...
- Delphi 正则表达式语法(1): 关于大小写与中文
Delphi 正则表达式语法(1): 关于大小写与中文 //替换一般字符串 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); ...
随机推荐
- TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复
TCP超时重传 原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止. 影响超时重传机制协议效率的一个关键参数是重传超时时 ...
- Storm实战
需求: spout输出一些手机品牌小写名称,第一个bolt将手机名称转成大写,第二个bolt在手机名称的后面再追加上时间. 项目目录: 导入相关的jar包. RandomWordSpout.java: ...
- pl/sql 实例精解 06
1. 简单循环 1: LOOP 2: statement1; 3: statement2; 4: EXIT WHEN condition; 5: END LOOP; 6: statement3; 也可 ...
- Oracle 计算两个时间的差值
有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):天:ROUND(TO_NUMBER(END_DATE - START_DATE))小时:R ...
- 第二百四十一节,Bootstrap进度条媒体对象和 Well 组件
第二百四十一节,Bootstrap进度条媒体对象和 Well 组件 学习要点: 1.Well 组件 2.进度条组件 3.媒体对象组件 本节课我们主要学习一下 Bootstrap 的三个组件功能:Wel ...
- Disillusioning #1 水题+原题赛(被虐瞎)
https://vijos.org/tests/542c04dc17f3ca2064fe7718 好一场 水题 比赛啊 t1直接上暴力费用流10分QAQ,虽然一开始我觉得可以不用的,直接dfs可以得出 ...
- 关于CoInitialize和CoUninitialize调用的有关问题
本人封装了一个类,里面需要用到ADO连接数据库, 所以需要初始化COM环境以及释放COM环境, 我打算在构造函数里面执行CoInitialize,在析构函数里面执行CoUninitialize 但是程 ...
- 69、ViewPagerIndicator+ViewPager实现Tab
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- github删除已经push到服务器上的commit的方法
使用两条指令: git reset --hard <commit_id> git push origin HEAD --force 其中commit_id是你想回到的commit的id(即 ...
- python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL
一.先在MySQL中创建test数据库,和相应的site数据表 二.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo4 三.进入 ...