|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artur Penttinen 2:5020/400 08 Aug 2000 11:57:24 To : All Subject : Re: regexp -------------------------------------------------------------------------------- On 7 Aug 2000, Paul Kulchenko wrote: > From: Paul Kulchenko <paulclinger@yahoo.com> > Newsgroups: fido7.ru.perl > Subject: Re: regexp > Date: 7 Aug 2000 22:11:02 +0400 > X-Mailer: Mozilla 4.7 [en]C-CCK-MCD NSCPCD47 (WinNT; I) > Organization: Rostelecom/Internet Centre > > Hi, Artur! > > Artur Penttinen wrote: > > > > > Как перловым регекспом удалить скажем второй TAB в строке? > > > > > s/\t// - Удаляет первый > > > > > s/t//g -Удаляет все. > > > > > Как удалить только второй? > > > А 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> > > > > Ы? > Ладно придираться-то. > Естественно нужно добавить кое-что в правой части и кое-что в левой :) > $str =~ s/(.*?\t.*)\t/$1/; > Идея-то правильная. Hаверное я опять придираюсь? :) # perl -de0 DB<4> $a = "a\tb\tc\td" DB<5> $a =~ s/(.*?\t.*)\t/$1/; DB<6> p $a a b cd DB<7> $a = "a\tb\tc\td" DB<8> $a =~ s/(.*?\t.*?)\t/$1/ DB<9> p $a a bc d DB<10> WBW, Artur -- Hе надо делать удивлённых движений руками. --- ifmail v.2.15dev5 * Origin: Gamma NNTP server Moscow Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11726e23bb9dc.html, оценка из 5, голосов 10
|