在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在Delphi本身不支持正则表达式,但是有许多第三方软件提供了相关组件,通常的有TPerlRegEx和RegExpr,可以在http://RegExpStudio.com中下载此模块,使用时无需安装只要在工程的路径中的search项指定即可(Projects->Options的Directories/Conditions的search项) 下面为设计的窗体:
其中匹配和替换的代码如下 //匹配 procedure TForm1.Button1Click(Sender: TObject); Edit2.Text := Rgr.Replace(Edit1.Text, '"$1"', True); //最后一个参数必须指定为True,否则不按组匹配,会得到333 "$1" "$1" Rgr.Free; //替换,将:xxx,替换为"xxx" procedure TForm1.Button2Click(Sender: TObject); end. 问题1: 如果我想匹配 AAA :B, :"C", :D, :"E", 然后将:B, :D,替换为:"B", :"D", 该如何实现呢?
解决方法: 1.字符中的:B, 和:D, ,可以用'(:)(\w+)(,)',共分为三个组,分别为$1,$2,$3; 2.替换用Rgr.Replace(Edit1.Text, '$1"$2"$3', True); 这样又会产生新的问题,即对于汉字无法替换,如AAA :B, :"C", :我们, :"E", 应用上面的规则只能替换为 AAA :"B", :"C", :我们, :"E",所以此处替换规则应该是 (1)以:号开始 (2)以,号结束 (3)中间为非"号的字符 新的匹配规则为 用'(:)([^"]+)(,)'代码为: procedure TForm1.Button2Click(Sender: TObject);
问题2: 不分大小写的匹配, 该如何实现呢?比如我想匹配aAA或aAa
解决方法: 可用 Rgr.Expression := '(?i)(aA)'; //(?i)表示不区分大小写
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论