Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Регулярное выражение (https://forum.antichat.xyz/showthread.php?t=156477)

SultanOFF 14.11.2009 15:15

Регулярное выражение
 
Помогите пожалуйста составить регулярное выражение, никак не могу догнать как работать с этой хитроумной вещью! :mad:
Код:

<html>
<head>
<title>Здесь заголовок крутого сайта</title>
<meta name="description" content="Здесь описание крутого сайта, лялял ерундна.">
<meta name="keywords" content=

нужно чтобы содержание текста между тегами <title> и </title> записалось в переменную A, а содержание описания записалось в переменную B. Помогите пожалуйста :(

Gar|k 14.11.2009 16:31

я не знаю на чем ты пишешь. на PCRE у меня получилось примерно такое выражение
/<title>(.*?)<\/title>\r\n.*iption\" content=\"(.*?)\"/

SultanOFF 14.11.2009 16:49

Я пишу на делфи, с помощью компонента regexpr. Я попробовал с твоим кодом:
Код:

procedure TForm1.btn2Click(Sender: TObject);
var
Reg1: TRegExpr;
begin
Reg1 := TRegExpr.Create;
Reg1.Expression:= '<title>(.*?)<\/title>\r\n.*iption\" content=\"(.*?)\"';
if Reg1.Exec(mmo1.Text) then
ShowMessage(Reg1.Match[1])
else ShowMessage('Не найдено');

end;
в итоге пишет не найдено :( Может стоить перед <title> поставить * ? Пробую, вылетает ошибка :(

Gar|k 14.11.2009 16:57

хмм делфи... ну попробуй замени \r\n на '.#10#13.' эмм или #13#10 не помню коды )
типа
Reg1.Expression:= '<title>(.*?)<\/title>'.#10#13.'.*iption\" content=\"(.*?)\"';

eLWAux 14.11.2009 17:03

PHP код:

procedure TForm1.btn2Click(SenderTObject);
 var 
Reg1TRegExpr;
 
begin
  Reg1 
:= TRegExpr.Create;
  
Reg1.Expression:= '<title>(.+?)<.title>';
  if 
Reg1.Exec(mmo1.Textthen
     ShowMessage
(Reg1.Match[1])
  else
     
ShowMessage('Не найдено');
 
end


SultanOFF 14.11.2009 17:09

записывал так Reg1.Expression:= '<title>(.*?)<\/title>'+#10#13+'.*iption\" content=\"(.*?)\"'; и не найдено в итоге, попробовал Reg1.Expression:= '<title>(.+?)<.title>'; выдало заголовок, теперь осталось вывести только описание :(

SultanOFF 14.11.2009 17:41

спасибо Гарик, спасибо eLWAux Вы Мне очень помогли :)

iroot 14.11.2009 18:26

Ну в описании я подозреваю будет что-то типа:
Код:

Reg1.Expression:= '<meta name="description" content="(.+?)">
';



Время: 07:44