随笔 - 1291  文章 - 26 评论 - 3122 trackbacks - 181

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

随笔分类(1440)

随笔档案(1245)

积分与排名

  • 积分 - 824788
  • 排名 - 19

最新评论

阅读排行榜

60天内阅读排行

// 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 万一 阅读(796) 评论(3)  编辑 收藏 网摘 所属分类: 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 [未注册用户]
@万一
呵呵,没辙了,试了各种办法。匹配中文怎么办呢?
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-24 17:46 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: