首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个关于正则表达式循环的有关问题

2013-01-04 
一个关于正则表达式循环的问题我用TPerlRegEx提取网页的部分内容varreg:TPerlRegExi:integerss:stringb

一个关于正则表达式循环的问题
我用TPerlRegEx提取网页的部分内容


var
reg:TPerlRegEx;
i:integer;
ss:string;
begin
 reg:=TPerlRegEx.Create(nil);
 reg.RegEx:='<td class="number">(\w*?)</td>.|[\s]*<td class="time">(.*?)</td>.|[\s]*class="ft-gray">(.*?)</span>.|[\s]*<td class="amount outlay">(.*?)</td>';//这里应该可以匹配到SubExpressions1、2、3、4各20条数据
 reg.Subject:=s;
while reg.MatchAgain do
begin
reg.SubExpressions[1]+reg.SubExpressions[2]+reg.SubExpressions[3]+reg.SubExpressions[4];//这里的循环次数怎么就成了80次了……怎么让他循环20次呢,找了很久没找到TPerlRegEx能返回这个数字
end;

[解决办法]
TPerlRegEx没用过
用标准的VBScript_RegExp_55_TLB参考下吧



const
  CR   = #13;
  LF   = #10;
  CRLF = CR + LF;

function TestReg(RegPattern, S: string):string;
var
  Regexp: TRegExp;
  oMatchs:MatchCollection;
  oMatch:Match;
  oSub:SubMatches;
  i,x:integer;
begin
  Result:='';
  Regexp := TRegExp.Create(nil);
   //Regexp.Multiline:=False;
  Regexp.Global:=True;
  Regexp.IgnoreCase:=True;

  Regexp.Pattern:=RegPattern;

  oMatchs:=Regexp.Execute(S) as MatchCollection;
  for i:=0 to oMatchs.Count - 1 do begin
    oMatch := oMatchs.Item[i] as Match;
    Result:= Result + '>'+ oMatch.Value + CRLF;
    oSub:=oMatch.SubMatches as SubMatches;
    for x:=0 to oSub.Count -1 do
      Result:= Result + '-->' + oSub.Item[x] + CRLF;
  end;
  Regexp.Free;
end;

热点排行