The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Раздел полезных советов: Как в Perl вырезать у строки лидиру..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Как в Perl вырезать у строки лидиру..."  +/
Сообщение от auto_tips (??) on 14-Окт-04, 10:34 
  $str =~ s/^\s*([^\s]?.*)$/$1/;
  $str =~ s/^(.*[^\s])\s*$/$1/; # два regex работают быстрее, чем один более сложный


URL:
Обсуждается: http://www.opennet.ru/tips/info/396.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как в Perl вырезать у строки лидирующие пробелы"  +/
Сообщение от B.O.B.A.H. (??) on 14-Окт-04, 10:34 
а так не работает?
s/^\ *// # удалит только пробелы
s/^\s*// # включая табуляцию и переход на новую строку
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как в Perl вырезать у строки лидирующие пробелы"  +/
Сообщение от Maxim Chirkov email(ok) on 16-Окт-04, 22:23 
Описанный в совете пример работает быстрее для относительно больших строк.
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/;'
    }
);

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как в Perl вырезать у строки лидирующие пробелы"  +/
Сообщение от Skif email(ok) on 24-Дек-04, 18:20 
пользуюсь s/^[\s\t]+/g
Не знаю на сколько быстрее/медленнее, но понятнее и не громоздко.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Как в Perl вырезать у строки лидирующие пробелы"  +/
Сообщение от Thekostya on 05-Дек-06, 18:55 
>  пользуюсь s/^[\s\t]+/g

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Как в Perl вырезать у строки лидирующие пробелы"  +/
Сообщение от Dan (??) on 23-Окт-16, 01:46 
Метасимвол \s по-хорошему включает в себя \t.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor