Delphi 正则表达式 TPerlRegEx 类
抄自:万一的博客 http://www.cnblogs.com/del/category/113551.html
目录:
基本方法
use PerlRegEx; //引用单元 var
reg:TPerlRegEx; //声明变量类型
begin
reg:= TPerlRegEx.Create; //创建实例
reg.Subject:= 'Goodbye Hello-World !'; //源字符串
reg.RegEx:= '(?<=Goodbye ).*'; //正规表达式
reg.Match; //执行查找
ShowMessage(reg.MatchedText); //输出查找结果
FreeAndNil(reg); //释放内存
end;
查找
//查看是否存在
if reg.Match then ... or begin
reg.Match;
if reg.FoundMatch then ...
end
//显示找到的第一个
if reg.Match then
ShowMessage(reg.MatchedText)
//分别显示找到的每一个
while reg.MatchAgain do //MatchAgain 是下一个
begin
ShowMessage(reg.MatchedText);
Inc(num);
end;
//目标字符串的 位置 和 长度
while reg.MatchAgain do
begin
ShowMessage(reg.MatchedText); //找到的字符串
ShowMessage(IntToStr(reg.MatchedOffset));//位置
ShowMessage(IntToStr(reg.MatchedLength));//长度
end;
子表达式
//字表达式:Groups[Index :Integer]:String;
reg.Subject:= 'Goodbye Hello-World !';
reg.RegEx:= '(?<=Goodbye )(\w*)-?(\w*)';
reg.Match;
for i:= to reg.GroupCount do
begin
ShowMessage(reg.Groups[i]);
end;
//分别显示“Hello-World”,“Hello”,“World”
限定范围:start、stop
//使用不可以使用ReplaceAll ,否则仍会替换全部内容
reg.Subject := 'ababab';
reg.Start := ;
reg.Stop := ;
while reg.MatchAgain do
begin
reg.Replace;
end;
ShowMessage(reg.Subject); //返回: abab◆
字符串分隔
reg.Subject := 'aaa,bbb,ccc,ddd';
reg.RegEx := ','; //确定字符串的分隔符 reg.Split(List,MaxInt); //List: TStrings; 用于存放分割后的字符串
{ 输入一个最大整数, 表示能分多少就分多少} ShowMessage(List.Text);
{返回:
aaa
bbb
ccc
ddd
}
Delphi 正则表达式 TPerlRegEx 类的更多相关文章
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数
Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数 //字符串分割: Split var reg: TPerlRegEx; List: TStrings; ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数
Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数 // EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile、Study
Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile.Study // Compile.Study var reg: TPerlRegEx; begin re ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace
Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace // Replace var reg: TPerlRegEx; begin reg := TPerlRe ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start、Stop
Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start.Stop //设定搜索范围: Start.Stop var reg: TPerlRegEx; begin r ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式
Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式 // MatchedExpression 与 SubExpressions[0] var reg: TPerl ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找 //查找是否存在 var reg: TPerlRegEx; begin reg := TPerlRegEx.Cre ...
- delphi正则表达式学习笔记(三)
Delphi 中经常使用的正则表达式 在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细致地研究它. 官方网站: http://www.regular-e x ...
- Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用 //准备: 我们先写一个搜索所有英文单词的表达式 var reg: TPerlRegEx; begin reg := TP ...
随机推荐
- 使用node.js在sublime text3搭建服务器
问题描述: 使用node.js在sublime text3中搭建好服务器后,第一次使用“ctrl+b”运行服务器没有问题,如图所示 如果想对test.js中的内容做些许修改,保存后再使用“ctrl+b ...
- cxf CXF搭建webService服务器
http://observer.blog.51cto.com/4267416/1231205 手动发布: public class ServerMain { public static void ma ...
- django urls路由匹配分发
django urls路由匹配分发 一.urls配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...
- BZOJ2333 棘手的操作
Description 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 x ...
- POJ 2234 Nim博弈
思路: nim博弈裸题 xor一下 //By SiriusRen #include <cstdio> using namespace std; int n,tmp,xx; int main ...
- C#内存映射文件学习[转]
原文链接 内存映射文件是由一个文件到进程地址空间的映射. C#提供了允许应用程序把文件映射到一个进程的函(MemoryMappedFile.CreateOrOpen).内存映射文件与虚拟内存有些类似, ...
- ubuntu14.04 + GTX980ti + cuda 8.0 ---Opencv3.1.0(基础+opecv_contrib)配置
如果喜欢视频的话:YouTube 上有视频教程 https://www.youtube.com/watch?v=1YIAp3Lh5hI 后来我在mac上安装最新版的OpenCV 找到了一片非常详细的教 ...
- rhel7安装oracle 11gR2
一.修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/lim ...
- 外文翻译 《How we decide》赛场上的四分卫 第四节
这是第一章的最后一节. 书的导言 本章第一节 本章第二节 本章第三节 制作肥皂剧是非常不易的.整个制作组都要很紧张的工作,每天都要拍摄一些新的事件.新的大转折的剧情需要被想象出来,新的剧本需要被编写, ...
- 认识MySQL Replication
MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 In ...