Forum Webscript.Ru
Программирование => Perl => Тема начата: andrez от 11 Июня 2004, 14:20:48
-
Как это сделать?
-
$stroka =~ s/^.{1}//;
-
andrez
какой? первый последний или произвольный???
-
commander:
какой? первый последний или произвольный???
как первый удалить уже написали, напиши как произвольный
И где можно почитать про регулярные выражения, чтоб много и понятно?
-
и как удалить все символы кроме последних 3?
-
s/.{3}$//
-
andrez:
И где можно почитать про регулярные выражения, чтоб много и понятно?
perldoc perlre
http://perldoc.narod.ru/regexp2-ref.pdf
-
NeoNox:
s/.{3}$//
у меня вся строчка гробится, а вместо нее пробел возвращается
-
andrez:
у меня вся строчка гробится, а вместо нее пробел возвращается
угу, неправильно понял.
s/.*?(.{3})$/$1/
perldoc -f substr
-
Только все эти задачи лучше решать с помощью substr, оно именно для этого и предназначено.
-
КшЫуфксрук
прав
в @m помещен CGI.pm
RegEXP: 0 wallclock secs ( 0.26 usr + 0.00 sys = 0.26 CPU) @ 23.08/s (n=6)
(warning: too few iterations for a reliable count)
SUBSTR: 0 wallclock secs ( 0.03 usr + 0.00 sys = 0.03 CPU) @ 200.00/s (n=6)
(warning: too few iterations for a reliable count)
Rate RegEXP SUBSTR
RegEXP 23.1/s -- -88%
SUBSTR 200/s 767% --
RegEXP => sub { undef $z; foreach my $t ( @m ){ $z .= $t =~ s/.*?(.{3})$/$1/} },
SUBSTR => sub { undef $z; foreach my $t ( @m ){ $z .= substr $t, -3 }},
-
Произвольный символ тоже удобнее удалить в помощью substr:
substr($str,$pos,1) = ""; #удаляем символ под номером $pos
-
есть строчка ищу в ней точки ~/\\./ ищет по всей строке
вопос: как делать сравнение с нным символом строки, например с 2
-
Почитай документацию по регекспам и перестанеш по каждому чиху на форум бегать.
-
NeoNox:
Почитай
уже читаю! :) вдруг кто сразу скажет
-
запросто, но
неужели самому не интересно найти ответ?
-
> вопос: как делать сравнение с нным символом строки, например с 2
Если ты точно знаешь, где должна стоять точка, то почему бы не использовать все тот же substr?
-
if (substr($stroka,1,1)=~/\\./) вот так оно работает, упростить можно?
-
if (substr($str,1,1) eq ".") { print "Ok!\\n" }
-
КшЫуфксрук:
if (substr($str,1,1) eq ".") { print "Ok!\\n" }
имелось ввиду не используя substr
-
еще вопросик! запись такого вида
if ($str=~/blabla/) выполнять если в строке $str есть blabla
как написать выполнять если в $str нет blabla?
Пишу if ($str!=~/blabla/) и нифига не работает
-
документацию открывал?
if ($str !~ /blabla/)
-
andrez:
if ($str=~/blabla/) выполнять если в строке $str есть blabla
как написать выполнять если в $str нет blabla?
perldoc perlsyn
смотреть unless
-
andrez
Ну а зачем использовать что-то другое, если для этих целей предназначем именно substr???
Можно придумать кучу способов, но вряд ли они будут быстрее или проще. А если какой-то и окажется на пару тактов быстрее, то читабельность сильно пострадает.