Memo1.tex:=HK1 NI430423196911135678/P1
HK1 NI430423196911135631/P3
HK1 NI430423196911135623/P2
HK1 NI430423196911135616/P4procedure TForm1.Button1Click(Sender: TObject);
Var
  myExpr: TRegExpr;
begin
    myExpr := TRegExpr.Create;
    myExpr.Expression := 'HK1.*?P(.*?)';
    if myExpr.Exec(Memo1.Text) then
      repeat
        memo2.Lines.Add(myExpr.Match[1]);
      until not MyExpr.ExecNext;
end;
为什么Memo2里面没有反应.哪步出错了??

解决方案 »

  1.   

    你没捕获你要的字符串
    用这个正则试试
    'HK1 NI([^P]*)P\d'
      

  2.   


    ...
    myExpr.Expression := 'HK1 NI([0-9]+)(/P[0-9]?)';
    ...
      

  3.   

    Memo1.tex:=HK1 NI430423196911135678/P1 
    HK1 NI430423196911135631/P3 
    HK1 NI430423196911135623/P2 
    HK1 NI430423196911135616/P4 procedure TForm1.Button1Click(Sender: TObject); 
    Var 
      myExpr: TRegExpr; 
    begin 
        myExpr := TRegExpr.Create; 
        myExpr.Expression := 'HK1 NI([0-9]+)(/P[0-9]?)'; 
        if myExpr.Exec(Memo1.Text) then 
          repeat 
            memo2.Lines.Add(myExpr.Match[1]); 
          until not MyExpr.ExecNext; 
    end; 
    这样只能显示一条..应该怎么样才能显示全部的??
      

  4.   

    本来就是全部,不要用Memo存储,会自动换行,换成string