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

Есть код 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
(Perl) Подскажите, как получить текст с помощью RegExp?
    #33712864
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
(Perl) Подскажите, как получить текст с помощью RegExp?
    #33712888
AlekseyD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже да ;). Я как раз такие манипуляции делать и не хочу. Всмысле извращаться. :) Хотелось что бы попроще поэллегантней решение. Это и так все понятно.
...
Рейтинг: 0 / 0
(Perl) Подскажите, как получить текст с помощью RegExp?
    #33712924
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseyDПохоже да ;). Я как раз такие манипуляции делать и не хочу. Всмысле извращаться. :) Хотелось что бы попроще поэллегантней решение. Это и так все понятно.
Вы сделаете не элегантнее, а просто воспользуетесь готовым модулем... с таким же успехом, можете реализовать данный код как свой модуль (заточить под свои нужды), и обращаться к нему ...
...
Рейтинг: 0 / 0
(Perl) Подскажите, как получить текст с помощью RegExp?
    #33716508
Smirnoff_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему бы не воспользоваться условиями в регулярных выражениях.
...
Рейтинг: 0 / 0
(Perl) Подскажите, как получить текст с помощью RegExp?
    #33716886
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Smirnoff_SergeyА почему бы не воспользоваться условиями в регулярных выражениях.
можно воспользоваться и условиями, но надо тестировать производительность, условия замедляют заметно ...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Подскажите, как получить текст с помощью RegExp?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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