随笔分类 -  Delphi 与正则表达式

1 2 下一页
关于 TRegEx.Split()
摘要:表达式中的括号将严重影响分割结果.uses RegularExpressions;const FSourceText = '1: AAA 2: BBB 3: CCC'; // 分隔符将有三部分构成: 一个数字, 一个冒号, 一个空格var Arr: TArray; str: string;procedure TForm1.Button1Click(Sender: TObject);begin Arr := TRegEx.Split(FSourceText, '\d: '); Memo1.Clear; for str in Arr do Memo1.Lines.A 阅读全文
posted @ 2013-06-21 11:30 万一 阅读(5344) 评论(2) 推荐(0) 编辑
回复 "Globe" 关于 XML 编码转换的问题
摘要:问题来源:http://www.cnblogs.com/del/archive/2011/03/24/1994029.html#2059114Globe 同学有这样的 XML 文件:其中包含中文、韩文,并且有些是十六进制、有些是十进制,真实的内容应该是:下面是把它打开并另存为标准的 UTF-8 格式 XML 的代码(使用了 DelphiXE 最新的正则表达式组件):unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrl 阅读全文
posted @ 2011-04-01 22:32 万一 阅读(3647) 评论(7) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (5) : 强测试
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}uses RegularExpressions, msxml;const 阅读全文
posted @ 2011-03-29 13:27 万一 阅读(4862) 评论(3) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (4) : 表达式选项
摘要:TRegExOption = ( roNone, //无 roIgnoreCase, //不区分大小写 roMultiLine, //多行模式; 可使 ^ 和 $ 匹配每个行首或行尾 roExplicitCapture, //只捕获指定了名称或编号的子表达式 roCompiled, //预编译表达式; 这在反复使用更有效率 roSingleLine, //单行模式; 使 . 也可匹配换行符 roIgnorePatternSpace //忽略注释和未经转义的空白);uses RegularExpressions;{roIgnoreCase}procedure TForm1.Button1Clic 阅读全文
posted @ 2011-03-29 10:05 万一 阅读(6006) 评论(4) 推荐(1) 编辑
官方的正则表达式组件 RegularExpressions (3) : TMatchEvaluator
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RegularExpressions;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private function MyMatchEvaluator(const Match: TMatch): string 阅读全文
posted @ 2011-03-28 22:36 万一 阅读(3887) 评论(5) 推荐(1) 编辑
官方的正则表达式组件 RegularExpressions (2) : 子表达式
摘要:uses RegularExpressions;const pattern = '([A-Z]+)(\d+)'; //其三个子表达式分别是:[A-Z]+\d+ [A-Z]+ \d+ txt = 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; //测试用的目标文本procedure TForm1.Button1Click(Sender: TObject);var match: TMatch; group: TGroup; groups: TGroupCollection;begin match := TRegEx.Match(txt, 阅读全文
posted @ 2011-03-28 21:42 万一 阅读(4660) 评论(0) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (1) : 基本应用
摘要:刚刚试了一下 DelphiXE 新增的正则表达式组件, 它基于 C 语言编写的 PCRE 库实现, 感觉设计的非常好。其主要的 TRegEx 被设计为一个结构(而不是类), 可能是基于效率的考虑;不过它主要调用了 TPerlRegEx 类的功能。TRegEx 的五个主要方法 IsMatch()、Match()、Matches()、Replace()、Split() 都有相应的 class 方法,所以一般情况下根本不需要手动实例化对象,直接使用 class 方法就够了。另:关于表达式语法可参加 Perl 5 的相关介绍。uses RegularExpressions; //相关单元const p 阅读全文
posted @ 2011-03-28 20:55 万一 阅读(11011) 评论(4) 推荐(2) 编辑
RegularExpressions(5) RegularExpressions 成员(二) IRegex
摘要://IRegex 的属性与方法 IRegex.GetGroupNames; { 子表达式编号数组, 譬如有两个子表达式, 会得到 0,1,2; 这基本无用 }IRegex.GetGroupNumbers; { 同上, 只是获取的是整数数组 }IRegex.GroupNameFromNumber(); { 应该是从子表达式编号获取子表达式的名称; 但没有实现, 来回都是编号 }IRegex.Grou... 阅读全文
posted @ 2010-01-07 13:31 万一 阅读(3041) 评论(0) 推荐(1) 编辑
RegularExpressions(4) RegularExpressions 成员(一)
摘要:主要成员有: IRegex、ICapture、IMatch、IMatchCollection、IGroup、IGroupCollection先看: ICapture; 常用的 IMatch、IGroup 都是从它继承而来; 作为一个底层接口一般不会被直接使用.它为 IMatch、IGroup 提供了三个属性: Index、Length、Value; 还有一个 ToString 方法也是获取 Val... 阅读全文
posted @ 2010-01-07 11:46 万一 阅读(3281) 评论(14) 推荐(1) 编辑
RegularExpressions(3) RegularExpressions 的工作思路
摘要:假如有这样一串文本: AAA1 BBB2 AA11 BB22 A111 B222 AAAA可以用表达式: [A-Za-z]+\d+ 提取到前六个字串. 测试代码:uses RegularExpressions;procedure TForm1.FormCreate(Sender: TObject);var Regex: IRegex; { RegularExpressions 提倡使用 IRegex 而不是 TRegex} Match: IMatch; { IMatch 表示匹配到的若干个字串中的一个 }begin { 构建表达式 } Regex := TRegex.Create('[ 阅读全文
posted @ 2010-01-07 10:08 万一 阅读(3073) 评论(0) 推荐(0) 编辑
RegularExpressions(2) RegularExpressions 支持的正则表达式语法
摘要:长时间不用正则, 语法都忘了; 以下是基于之前的资料又结合 msdn 复习整理的记录:TRegex.Create('abc');abcde ABCDEabcde默认区分大小写TRegex.Create('abc', [roIgnoreCase]);abcde ABCDE abcde使用 roIgno... 阅读全文
posted @ 2010-01-06 01:01 万一 阅读(6845) 评论(2) 推荐(2) 编辑
RegularExpressions(1) 一个 Net 样式的、适用于 Delphi 2009 之后版本的正则表达式组件
摘要:现在推荐使用官方的正则表达式组件: http://www.cnblogs.com/del/archive/2011/03/28/1998100.htmlRegularExpressions 和前面刚刚学完的 GdiPlus 都是 Erik van Bilsen 先生在 2009 年完成的.Erik van Bilsen 的网站: www.bilsen.com.RegularExpressions1.0 直接下载地址: www.bilsen.com/regularexpressions/RegularExpressions1.0.zipRegularExpressions 的基础是 C 写的(来 阅读全文
posted @ 2010-01-05 23:25 万一 阅读(4757) 评论(3) 推荐(2) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数
摘要://字符串分割: Split var reg: TPerlRegEx; List: TStrings; begin List := TStringList.Create; reg := TPerlRegEx.Create(nil); reg.Subject := 'aaa,bbb,ccc,ddd'; reg.RegEx := ','; {这里可是运行相当复杂的分割符... 阅读全文
posted @ 2007-12-24 22:01 万一 阅读(7935) 评论(15) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数
摘要:// EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'C++Builer'; reg.RegEx := reg.EscapeRegExChars('C+') + '{2}'; {相当于 'C\+{2}'}... 阅读全文
posted @ 2007-12-24 20:56 万一 阅读(5081) 评论(0) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile、Study
摘要:// Compile、Study var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.RegEx := 'ab'; reg.Options := [preCaseLess]; reg.Compile; {编译表达式} reg.Study; {Study 方法会检查是否编译, 如果没有编译则执行 ... 阅读全文
posted @ 2007-12-24 18:29 万一 阅读(4974) 评论(0) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace
摘要:// Replace var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.RegEx := 'ab'; reg.Replacement := '◆'; reg.Subject := 'ababab'; reg.ReplaceAll; ShowMessage(reg.Subject); //... 阅读全文
posted @ 2007-12-24 18:21 万一 阅读(6191) 评论(0) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start、Stop
摘要://设定搜索范围: Start、Stop var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'ababab'; reg.RegEx := 'ab'; reg.Replacement := '◆'; reg.Start := 1; reg.Stop := 2; w... 阅读全文
posted @ 2007-12-24 03:29 万一 阅读(5354) 评论(0) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式
摘要:// MatchedExpression 与 SubExpressions[0] var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007'; reg.RegEx := 'Delphi'; while reg.MatchAgain do... 阅读全文
posted @ 2007-12-22 11:46 万一 阅读(7834) 评论(9) 推荐(0) 编辑
Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
摘要://查找是否存在 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007 for Win32'; reg.RegEx := '\d'; if reg.Match then ShowMessage('找到了') else ... 阅读全文
posted @ 2007-12-21 17:30 万一 阅读(13580) 评论(8) 推荐(0) 编辑
Delphi 正则表达式语法(10): 选项
摘要:// preCaseLess: 不区分大小写, 相当于其他语言中的 i var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'abc ABC aBc'; reg.RegEx := 'abc'; reg.Replacement := '◆'; reg.Options := ... 阅读全文
posted @ 2007-12-21 16:44 万一 阅读(7776) 评论(3) 推荐(0) 编辑

1 2 下一页