Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1354327
  • 博文数量: 334
  • 博客积分: 10302
  • 博客等级: 上将
  • 技术积分: 2986
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-12 10:17
文章分类

全部博文(334)

文章存档

2013年(1)

2012年(9)

2011年(4)

2010年(10)

2009年(24)

2008年(64)

2007年(72)

2006年(150)

我的朋友

分类:

2007-07-15 01:02:57


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

.  代表所有字符,换行符号(newline)除外
*  0或多次 *号会尽可能多匹配
+  1或多次 +号会尽可能的多匹配
?  0或1个,即使前面有+号或*号,也只能为2个(即1+1=2个)
^  否定符,如 [^2]+ 匹配不能含有2的任意字符串
^ 匹配开头  ^D,匹配以D开头的字符串
$ 匹配结尾  $S,匹配以S结尾的字符串
| 相当于or About cats and dogs cat|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 匹配word character,也会匹配阿拉伯数字(匹配1次)sd35fg3 \b3\b 匹配的是d35
\p{L} 匹配Unicode的字符
范围查询
q(?=u) 匹配question,不匹配Iraq,
q(?!u) 不匹配question,匹配Iraq,
(?<=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;


阅读(1745) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~