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


Автор: burakov 13.1.2008, 01:32
Добрый день.
Помогите пожалуйста

Есть код
Код

$str1 = 'шуфутинский михаил - левый берег дона (mix).';
$str2 = 'шуфутинский михаил - левый берег дона.';
if ($str1 =~ /$str2/){print "ok";} else {print "no";}


выдает ответ "ок". (хотя я ожидаю от него "no") Почему? и

Код

#строки полностью совпадают
$str1 = 'шуфутинский михаил - левый берег дона (mix).';
$str2 = 'шуфутинский михаил - левый берег дона (mix).';
if ($str1 =~ /$str2/){print "ok";} else {print "no";}


выдает ответ "no". (хотя я ожидаю от него "ok")??? 

В чем тут дело?

Спасибо.

Автор: nitr 13.1.2008, 02:25
Это уже обсуждалось, изучите плотнее регулярные выражения.
В данном случае надо было экранировать символы.

Код
#!perl

$str1 = 'шуфутинский михаил - левый берег дона (mix).';
$str2 = 'шуфутинский михаил - левый берег дона.';
if ($str1 =~ /\Q$str2\E/){print "ok";} else {print "no";}

print "\n";

#строки полностью совпадают
$str3 = 'шуфутинский михаил - левый берег дона (mix).';
$str4 = 'шуфутинский михаил - левый берег дона (mix).';
if ($str3 =~ /\Q$str4\E/){print "ok";} else {print "no";}


Добавлено через 1 минуту и 47 секунд
А чем вам eq не нравиться?

Код
#!perl

$str1 = 'шуфутинский михаил - левый берег дона (mix).';
$str2 = 'шуфутинский михаил - левый берег дона.';
if ($str1 eq $str2){print "ok";} else {print "no";}

print "\n";

#строки полностью совпадают
$str3 = 'шуфутинский михаил - левый берег дона (mix).';
$str4 = 'шуфутинский михаил - левый берег дона (mix).';
if ($str3 eq $str4){print "ok";} else {print "no";}

Автор: burakov 13.1.2008, 11:53
Спасибо. Получилось. 
Буду читать рег. выражения.

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