Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > значение между тегами


Автор: evya 5.4.2011, 20:19
помогите простое
есть теги
<city>Москва</city>

как в переменную записать значение между ними
$i=Москва

Автор: Pfailed 5.4.2011, 20:45
http://www.intuit.ru/department/pl/perl/8/

Автор: evya 6.4.2011, 18:39
А нельзя на примере???

Автор: Pfailed 6.4.2011, 18:42
Нет

Автор: evya 6.4.2011, 18:55
ну а для чего форум же?
тут ищят помощи.

Автор: Pfailed 6.4.2011, 19:04
Помощь выдана в полном объёме. Читайте по ссылке до просветления, потом спрашивайте что не ясно.

Автор: evya 6.4.2011, 19:28
$pattern = q|<city>(.*?)<\/city>|;
$gorod =~ m/$pattern/;

Написал так, а как обойтись без перемнной $1, и без шаблона pattern
можно в одной строке реализовать???

Автор: Pfailed 6.4.2011, 19:46
Можно, смотрите ответ в вашей предыдущей теме: http://forum.vingrad.ru/forum/topic-325378.html

Автор: mishnik 8.4.2011, 11:57
Цитата(evya @  5.4.2011,  20:19 Найти цитируемый пост)
помогите простое
есть теги
<city>Москва</city>

Код

my $line = '<city>Москва</city>';
my $tag  = 'city';
my $i    = q[];
if ( $line =~ /\<$tag\>(.*)\<\/$tag\>/ims ) {
    $i = $1;
}
print "]$i]\n";



Автор: alezzz 8.4.2011, 14:52
mishnik, вот так думаю не стоит делать, .* в комбинации с  /s сохранит абсолютно все от первого тега <city> до последнего </city>.

На википедии неплохая статья для ознакомления с регулярными выражениями, там-же есть пример как работать с тегами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)