Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Подскажите, как получить текст с помощью RegExp? / 6 сообщений из 6, страница 1 из 1
06.05.2006, 12:06:45
    #33712671
AlekseyD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
Здравствуйте!

Есть код html например

<div id="test1">
<a id="a1">text1</a>
<a id="a1">text2</a>
<a id="a1">text3</a>
</div>
......
<div id="test2">
<a id="a1">text4</a>
<a id="a1">text5</a>
<a id="a1">text6</a>
</div>

Нужно получить список слов заключенных в теги <a><a/>. Т.е. text1,text2....
Я это делаю так
@arr = ($html=~/<a id="a1">([^<]+)</a>/g);

Все нормально работает. Но вот вопрос как мне получить только список слов из тега <div id="test1"></div> одним регэкспом?
Я вообще использую библиотеку RegExp::Bind там все делаеться чуть проще.

@aa = RegExp::Bind->global_bind($html, qr/<a id="a1">(?#<teg_a>[^<]+)</a>/);

Т.е. в @aa я получу массив ссылок на хеши. @aa = ({teg_a=>text1},{teg_a=>text2}....)

Подскажите пожалуйста как мне получить только список слов из тега <div id="test1">...</div> одним регэкспом с помощью библиотеки RegExp::Bind или подобных ей.

Спасибо.
...
Рейтинг: 0 / 0
06.05.2006, 12:50:39
    #33712864
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
#!/usr/bin/perl
use strict;
use warnings;
use locale; use POSIX qw(locale_h); setlocale(LC_CTYPE,"ru_RU.CP1251");
use CGI::Carp qw(fatalsToBrowser); # For debuging

print "Content-type: text/plain\n\n";

my %result;
my $str = qq|
<div id="test1">
<a id="a1">text1</a>
<a id="a1">text2</a>
<a id="a1">text3</a>
</div>
......
<div id="test2">
<a id="a1">text4</a>
<a id="a1">text5</a>
<a id="a1">text6</a>
</div>
|;

my @array = split( /<\/div>/, $str );

foreach ( @array ) {
	while ( /<div\sid="(\w+)">(.+)/gs ) {
		my $key = $ 1 ;
		my $value = $ 2 ;
		
		while ( $value =~ /<a\sid="(\w+)">(\w+)<\/a>/gs ) {
			push( @{$result{$key}}, { id => $ 1 , value => $ 2  } );
		}
	}
}


while ( my ($key, $value) = each(%result) ) {
	print "$key\n";
	
	foreach ( @{$value} ) {
		print "\t$_->{'id'} - $_->{'value'}\n";
	}
	
	print "\n";
}

 1 ;
результат

test1
a1 - text1
a1 - text2
a1 - text3

test2
a1 - text4
a1 - text5
a1 - text6



я извращенец ?
...
Рейтинг: 0 / 0
06.05.2006, 12:56:45
    #33712888
AlekseyD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
Похоже да ;). Я как раз такие манипуляции делать и не хочу. Всмысле извращаться. :) Хотелось что бы попроще поэллегантней решение. Это и так все понятно.
...
Рейтинг: 0 / 0
06.05.2006, 13:07:01
    #33712924
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
AlekseyDПохоже да ;). Я как раз такие манипуляции делать и не хочу. Всмысле извращаться. :) Хотелось что бы попроще поэллегантней решение. Это и так все понятно.
Вы сделаете не элегантнее, а просто воспользуетесь готовым модулем... с таким же успехом, можете реализовать данный код как свой модуль (заточить под свои нужды), и обращаться к нему ...
...
Рейтинг: 0 / 0
10.05.2006, 00:27:30
    #33716508
Smirnoff_Sergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
А почему бы не воспользоваться условиями в регулярных выражениях.
...
Рейтинг: 0 / 0
10.05.2006, 10:17:13
    #33716886
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Подскажите, как получить текст с помощью RegExp?
Smirnoff_SergeyА почему бы не воспользоваться условиями в регулярных выражениях.
можно воспользоваться и условиями, но надо тестировать производительность, условия замедляют заметно ...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Подскажите, как получить текст с помощью RegExp? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]