The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Регулярные выражения. Как вытащить текст из тэгов ?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от RUSLAN emailИскать по авторуВ закладки on 26-Дек-02, 16:31  (MSK)
Немогу вытащить текст из тегов которые расположены
не в одной строке, например:
<h1> text text,
text  some text,
text
text
text text </h1>
Только надо вытаскивать весь текст ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от uldus Искать по авторуВ закладки on 27-Дек-02, 13:28  (MSK)
>Немогу вытащить текст из тегов которые расположены
>не в одной строке, например:
><h1> text text,
>text  some text,
>text
>text
>text text </h1>
>Только надо вытаскивать весь текст ?

Поищи на CPAN модули парсинга HTML, простой регексп здесь не поможет.
perldoc HTML::SimpleParse
или perldoc HTML::Parser

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от SS Искать по авторуВ закладки on 28-Дек-02, 06:39  (MSK)
Почему это regexp "не поможет"?


Тебе же не далее как дней десять назад ilya подсказал ход мыслей в подобных ситуациях...

http://www.opennet.me/openforum//vsluhforumID9/1193.html

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от RUSLAN emailИскать по авторуВ закладки on 28-Дек-02, 15:08  (MSK)
>Почему это regexp "не поможет"?
>
>
>Тебе же не далее как дней десять назад ilya подсказал ход мыслей
>в подобных ситуациях...

  я пробовал этот вариант, но он подходит только для одинарных тэгов типа <meta ...>, а если брать два тэга, то только выдирает один раз. Может что-то не то я делал.  


  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от konst emailИскать по авторуВ закладки on 28-Дек-02, 16:24  (MSK)
>  я пробовал этот вариант, но он подходит только для одинарных тэгов типа <meta ...>, а если брать два тэга, то только
>выдирает один раз. Может что-то не то я делал.  
Если тэг на стр встречается несколько раз
Надо собрать их в массив. Потом разбирать массив...
Напр. в той программке от konst перед всеми
$notfull = "";
вставить
push(@rez,$rez);
$notfull = "";

а в конце вместо print ..
print "TAG = $tag\n";
foreach $r (@rez) {
  ++$i;
  print "$i: $r \n";
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от uldus Искать по авторуВ закладки on 30-Дек-02, 09:59  (MSK)
>Почему это regexp "не поможет"?

Помочь может лишь достаточно сложный комплекс регекспов, и то при условии - неделя на штудирование стандартов w3, неделя на непонимание почему не всегда работает и месяц на отладку и поиск исключений из правил :-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от konst emailИскать по авторуВ закладки on 28-Дек-02, 15:13  (MSK)
>Немогу вытащить текст из тегов которые расположены
>не в одной строке, например:
><h1> text text,
>text  some text,
>text
>text
>text text </h1>
>Только надо вытаскивать весь текст ?
>
=== + можно напр. так ===
$fn = $ARGV[0]; # $fn = 'htm-file';
$tag = $ARGV[1]; # $tag = 'h1';
open(FN,$fn) || die "$!\n";
while(<FN>) {
    chomp;
    if (/<$tag[^>]*>(.*?)(<\/$tag>)?(.*)$/i) {
unless ($2) {
    $rez = $3;
    $notfull = " ";
} else {
    $rez = $1;
    $notfull = "";
}
next;
    }
    if ($notfull) {
if (/^(.*?)<\/$tag>/i) {
    $rez .= " ". $1;
    $notfull = "";
} else {
    $rez .= " ". $_;
}
next;
    }
}
print "within those tags \"$tag\"  text =  $rez\n";


  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от Parish Искать по авторуВ закладки on 04-Янв-03, 22:41  (MSK)
#!/usr/bin/perl
$str=<<"TEXT";
<h1> text text,
text  some text,
text
text
text text </h1>
TEXT
$tag="h1";
$str=~m/<$tag>(.*?)<\/$tag>/is;
print $1;
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от RUSLAN emailИскать по авторуВ закладки on 08-Янв-03, 21:34  (MSK)
Спасибо большое! то что надо, токо этот код вытаскивает первое нахождение, а как вытащить все строки заключённые в тэги <h1> по всему документу ?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от Plus emailИскать по авторуВ закладки on 12-Янв-03, 20:22  (MSK)
>Спасибо большое! то что надо, токо этот код вытаскивает первое нахождение, а как вытащить все строки заключённые в тэги <h1> по всему документу ?


Добавь в конце регекспа модификатор g
Например
$tag="h1";
$str=~s/<$tag>(.*?)<\/$tag>/$1/sg;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от RUSLAN Искать по авторуВ закладки on 13-Янв-03, 13:41  (MSK)
>Добавь в конце регекспа модификатор g
>Например
>$tag="h1";
>$str=~s/<$tag>(.*?)<\/$tag>/$1/sg;


Этот код удаляет тэги со всей строки, а надо что-бы забирался только текст
внутри тэга например <h1> .... </h1> !?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от trdmitry emailИскать по авторуВ закладки on 17-Янв-03, 15:47  (MSK)
>>Добавь в конце регекспа модификатор g
>>Например
>>$tag="h1";
>>$str=~s/<$tag>(.*?)<\/$tag>/$1/sg;
>
>
>Этот код удаляет тэги со всей строки, а надо что-бы забирался только
>текст
>внутри тэга например <h1> .... </h1> !?


$str=~s/.*?<$tag>(.*?)<\/$tag>.*/$1/sg;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Регулярные выражения. Как вытащить текст из тэгов ?"
Сообщение от RUSLAN Искать по авторуВ закладки on 01-Фев-03, 17:47  (MSK)
Может кому-то пригодится, самое правильно то это делается так:

undef $/;
open(G,"index.html");
$data=<G>;
close(G);
$/="\n";
$tag="h1";
while($data=~m/(<$tag>)(.*?)(<\/$tag>)/isg)
{
$h1=$2;
push(@mastags,$h1);
}
print  @mastags;


# Тема закрыта !

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру