在Delphi程序中使用正则表达式

TRegexp的正则表达式的格式说明文档

.代表所有字符,换行符号(newline)除外
*0或多次*号会尽可能多匹配
+1或多次+号会尽可能的多匹配
?0或1个,即使前面有+号或*号,也只能为2个(即1+1=2个)
^否定符,如[^2]+匹配不能含有2的任意字符串
^匹配开头^D,匹配以D开头的字符串
$匹配结尾$S,匹配以S结尾的字符串
|相当于orAboutcatsanddogscat|dog|mouse|fish匹配cat(第一个,如果第一不存在,匹配第二个
[]取其中一个(1次)
()匹配操作模块取值用\1\2等表示Set(Value)?匹配Set或者SetValue.(?:Value)前面用?:则不提取匹配的值,如果不需要取值就这样用,效率会高
{min,max}重复的次数{min,}不少于min个到无穷个,{num}精确到Num个
\d匹配所有阿拉伯数字
\b匹配仅仅是文字的字符串,2个字节宽的文字,如中文,日文等
\B和\b刚好想反,只匹配1字节宽的如字母,数字,不匹配符号
\w匹配wordcharacter,也会匹配阿拉伯数字(匹配1次)sd35fg3\b3\b匹配的是d35
\p{L}匹配Unicode的字符
范围查询
q(?=u)匹配question,不匹配Iraq,http://www.regular-expressions.info/quickstart.html
q(?!u)不匹配question,匹配Iraq,http://www.regular-expressions.info/quickstart.html
(?<=a)b匹配abc
(?<!a)b不匹配abc

======================================

{
使用微软RegExp
1. 下载并安装最新版的"Microsoft(r) Windows(r) Script"
2. RegExp包含在vbscript.dll中所以我们必须先注册regsvr32 vbscript.dll
注(安装了Ie5后默认已经包含该控件)

3.在Delphi中引入"Microsoft VBScript Regular Expressions"
主菜单->Project->Import type library->在列表中选择"Microsoft VBScript Regular Expressions"

生成TRegExp控件

4.使用以下代码调用TRegExp控件
}
procedure TForm1.Button1Click(Sender: TObject);
var
matchCollection: IMatchCollection;
Matchs: Match;
submatch: ISubMatches;
i, j: integer;
begin
RegExp1.Global := true;
RegExp1.Pattern := '\w+\.\w+(?!.)';
RegExp1.IgnoreCase := true;
matchCollection := RegExp1.Execute(edit1.Text) as IMatchCollection;

for i := 0 to matchCollection.Count - 1 do
begin
Matchs := matchCollection.Item[i] as Match;
submatch := Matchs.SubMatches as ISubMatches;
memo1.Lines.Add(Matchs.Value);
for j:=0 to submatch.Count -1 do
memo1.Lines.Add(submatch.Item[j])
end;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值