随笔 - 1656  文章 - 26 评论 - 6692 trackbacks - 253

提示1: 点击 标题 可进入首页;   提示2: 从搜索引擎中搜索 万一 可迅速找到这里.

随笔分类(1869)

随笔档案(1584)

积分与排名

  • 积分 - 1724455
  • 排名 - 10

最新评论

// MatchedExpression 与 SubExpressions[0]
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);

  reg.Subject := 'CodeGear Delphi 2007';
  reg.RegEx   := 'Delphi'; 

  while reg.MatchAgain do
  begin
    ShowMessage(reg.MatchedExpression); //Delphi; 这是匹配到的内容
    ShowMessage(reg.SubExpressions[0]); //Delphi; 也可以这样显示匹配到的内容
  end;
{
  SubExpressions 是一个数组:
  SubExpressions[1] 储存第 1 个表达式匹配的内容;
  SubExpressions[2] 储存第 2 个表达式匹配的内容;
  SubExpressions[n] 储存第 n 个表达式匹配的内容;

  SubExpressions[0] 储存整个表达式匹配的内容;

  MatchedExpression 表示的不过是 SubExpressions[0].
}

  FreeAndNil(reg);
end;

//提取子表达式匹配到的内容 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'abc A1111 BB222 CCC33 DDDD4'; reg.RegEx := '\b([A-D]+)([1-4]+)\b'; //这个表达式有两个子表达式构成 while reg.MatchAgain do begin ShowMessage(reg.SubExpressions[0]); //将分别显示: A1111 BB222 CCC33 DDDD4 ShowMessage(reg.SubExpressions[1]); //将分别显示: A BB CCC DDDD ShowMessage(reg.SubExpressions[2]); //将分别显示: 1111 222 33 4 {另外: reg.SubExpressionCount 是子表达式的个数; reg.SubExpressionLengths[n] 是第 n 个表达式返回的字符串的长度; reg.SubExpressionOffsets[n] 是第 n 个表达式返回的字符串在源字符串中的位置 } end; FreeAndNil(reg); end;
//子表达式不能超过 MAX_SUBEXPRESSIONS = 99 个, MAX_SUBEXPRESSIONS 是 TPerlRegEx 的内置常数.
posted on 2007-12-22 11:46 万一 阅读(1269) 评论(5)  编辑 收藏 网摘 所属分类: 40.Delphi 与正则表达式

FeedBack:
#1楼 2008-09-09 14:47 rise[未注册用户]
博主,为什么我想匹配一个“不能纯数字,只能是a-zA-Z_-0-9“的字符串,而我用^([0-9]*[A-Za-z_-]+){3,12}$不行呢?我发现这句必须得有3个字母才行,如果是148a,32da这样的根本匹配不了,可以指正一下吗?

  回复  引用    
#2楼[楼主] 2008-09-09 16:30 万一      
@rise
我暂时的版本不方便测试, 自己先下下功夫好吗.

  回复  引用  查看    
#3楼 2008-09-09 16:43 rise[未注册用户]
@万一
呵呵,没辙了,试了各种办法。匹配中文怎么办呢?

  回复  引用    
#4楼 2009-03-10 16:43 jsffan[未注册用户]
@rise
请这样试试看
^([0-9]+[A-Za-z_-]+)$
必须数字打头,后跟字母或_-

  回复  引用    
#5楼 2009-04-29 09:39 敏周
很好 很强大!!!
  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1010352




相关文章:

相关链接: