![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Может быть изъезженная тема, но все же. Как спарсить значения из: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код HTML: 
	
 Код: 
	<a title=" и href Код: 
	<div title=" и </div> В регулярных выражениях не получается разобраться  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вроде так маска должна выглядеть для регулярки: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	'<a title="(.*)" href=.*<div title="(.*)">' Соответственно возвращать для каждой итерации должна по 2 значения  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Скорее вот такое: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	<div title=".*">|<a title=".*" href А вообще вот хороший ресурс для отладки: https://regex101.com/  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Не парсит. Что я делаю не так? 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	var
re:TRegExpr;
begin
re := TRegExpr.Create;
  re.ModifierM := true;
  re.InputString := Memo1.Text;
  re.Expression := '<div title=".*">|<a title=".*" href';
  re.Compile;
  try
    if re.Exec(re.InputString) then
      repeat
        Memo2.Lines.Add(re.Match[2]);
      until not re.ExecNext;
  finally
    re.Free;
  end;
end; | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Делаю так  
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	var re:TRegExpr; begin re:=TRegExpr.Create; re.Expression:='<a title="(.*?)" href|<div title="([\d]+)\"'; if re.Exec(memo1.text) then repeat memo2.Lines.Add(trim(re.Match[1])+re.Match[2]); until not re.ExecNext; re.Free; end; Код: 
	re,Match[1] Код: 
	re,Match[2]  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Все нормально работает. Используйте стандартный модуль для работы с регулярными выражениями. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	uses
RegularExpressions;
...
procedure TForm1.Button1Click(Sender: TObject);
var
 RegEx: TRegEx;
 M: TMatchCollection;
 RegStr: String;
 I: LongInt;
begin
  RegStr := '<div title=".*">|<a title=".*" href';
  RegEx := TRegEx.Create(RegStr);
  if RegEx.IsMatch(Memo1.Text)then
    begin
      Memo2.Clear;
      M:=RegEx.Matches(Memo1.Text, RegStr, [roMultiLine, roIgnoreCase]);
      for I := 0 to M.Count - 1 do
        Memo2.Lines.Add(M.Item[i].Value);
    end;
end; |