|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artur Penttinen 2:5020/400 07 Aug 2000 15:21:57 To : All Subject : Re: regexp -------------------------------------------------------------------------------- On 7 Aug 2000, Serge Shikov wrote: > From: Serge Shikov <shikov@rinet.ru> > Newsgroups: fido7.ru.perl > Subject: Re: regexp > Date: 7 Aug 2000 12:19:30 +0400 > X-Mailer: Mozilla 4.6 [en] (WinNT; I) > Organization: home > > Artur Penttinen wrote: > > > > > Как перловым регекспом удалить скажем второй TAB в строке? > > > s/\t// - Удаляет первый > > > s/t//g -Удаляет все. > > > Как удалить только второй? > > > > if ($str =~ m/^(.*?\t.*?)\t(.*)$/) { $str = $1 . $2; } > Б-р-р, а зачем такие сложности-то? Объясни, зачем тут ^, $, и почему не > использовать s///? > А if опять же зачем? Ведь тривиальнейший регексп: > > $str =~ s/.*?\t.*(\t).*//; > > будет IMHO делать ровно тоже самое, причем только тогда, когда > совпадение будет иметь место. Даже ? кажется не потребуется... # perl -de0 DB<1> $str = "a\tb\tc"; DB<2> if ($str =~ m/^(.*?\t.*?)\t(.*)$/) { $str = $1 . $2; } DB<3> p $str a bc DB<5> $str = "a\tb\tc"; DB<6> $str =~ s/.*?\t.*(\t).*//; DB<7> p $str DB<8> Ы? WBW, Artur -- Последняя глава любой кулинарной книги : "Как действовать при отравлениях". --- ifmail v.2.15dev5 * Origin: Gamma NNTP server Moscow Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1172636cb7d3a.html, оценка из 5, голосов 10
|