The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как в Perl вырезать у строки лидирующие пробелы
  $str =~ s/^\s*([^\s]?.*)$/$1/;
  $str =~ s/^(.*[^\s])\s*$/$1/; # два regex работают быстрее, чем один более сложный
 
04.01.2003
Ключи: regex, perl / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Работа с сетью и IP адресами на Perl

Обсуждение [ RSS ]
  • 1, B.O.B.A.H. (??), 10:34, 14/10/2004 [ответить]  
  • +/
    а так не работает?
    s/^\ *// # удалит только пробелы
    s/^\s*// # включая табуляцию и переход на новую строку
     
     
  • 2, Maxim Chirkov (ok), 22:23, 16/10/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Описанный в совете пример работает быстрее для относительно больших строк.
    s/^\s*//;$str =~ s/\s*$//; быстрее в случае небольших строк (примерно до 50 символов).
    $str =~ s/^\s*(.*?)\s*$/$1/;' - наименее оптимальный вариант.

    $str =~ s/^\s*//;$str =~ s/^(.*[^\s])\s*$/$1/; - комбинированный вариант, очень неплохой результат.

    тестировал так:

    #!/usr/bin/perl
    use strict;
    use Benchmark;

    timethese(100000,
        {
          test1 => 'my $str="  test "; $str =~ s/^\s*([^\s]?.*)$/$1/;$str =~ s/^(.*[^\s])\s*$/$1/;',
          test2 => 'my $str="  test "; $str =~ s/^\s*//;$str =~ s/\s*$//;',
          test3 => 'my $str="  test "; $str =~ s/^\s*(.*?)\s*$/$1/;',
          test4 => 'my $str="  test "; $str =~ s/^\s*//;$str =~ s/^(.*[^\s])\s*$/$1/;'
        }
    );

     

  • 3, Skif (ok), 18:20, 24/12/2004 [ответить]  
  • +/
    пользуюсь s/^[\s\t]+/g
    Не знаю на сколько быстрее/медленнее, но понятнее и не громоздко.
     
     
  • 4, Thekostya (?), 18:55, 05/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >  пользуюсь s/^[\s\t]+/g

    а g  в конце зачем ? :)

     
  • 5, Dan (??), 01:46, 23/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Метасимвол \s по-хорошему включает в себя \t.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру