HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Регулярное выражение
  #1  
Старый 14.11.2009, 15:15
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
С нами: 8913664

Репутация: 0
Smile Регулярное выражение

Помогите пожалуйста составить регулярное выражение, никак не могу догнать как работать с этой хитроумной вещью!
Код:
<html>
<head>
<title>Здесь заголовок крутого сайта</title>
<meta name="description" content="Здесь описание крутого сайта, лялял ерундна.">
<meta name="keywords" content=
нужно чтобы содержание текста между тегами <title> и </title> записалось в переменную A, а содержание описания записалось в переменную B. Помогите пожалуйста
 
Ответить с цитированием

  #2  
Старый 14.11.2009, 16:31
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами: 9023100

Репутация: 395


По умолчанию

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

  #3  
Старый 14.11.2009, 16:49
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
С нами: 8913664

Репутация: 0
По умолчанию

Я пишу на делфи, с помощью компонента 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> поставить * ? Пробую, вылетает ошибка
 
Ответить с цитированием

  #4  
Старый 14.11.2009, 16:57
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами: 9023100

Репутация: 395


По умолчанию

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

  #5  
Старый 14.11.2009, 17:03
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

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
 
Ответить с цитированием

  #6  
Старый 14.11.2009, 17:09
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
С нами: 8913664

Репутация: 0
По умолчанию

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

  #7  
Старый 14.11.2009, 17:41
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
С нами: 8913664

Репутация: 0
По умолчанию

спасибо Гарик, спасибо eLWAux Вы Мне очень помогли
 
Ответить с цитированием

  #8  
Старый 14.11.2009, 18:26
iroot
Новичок
Регистрация: 27.10.2008
Сообщений: 16
С нами: 9230334

Репутация: 0
По умолчанию

Ну в описании я подозреваю будет что-то типа:
Код:
Reg1.Expression:= '<meta name="description" content="(.+?)">
';
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# регулярное выражение kusanagi С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 1 17.07.2009 14:33
Помогите составить регулярное выражение slesh PHP 7 03.06.2009 09:39
регулярное php barnaki PHP 13 08.02.2009 20:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.