Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Циклический поиск подстроки в строке 
:(
    Опции темы
loginn
Дата 5.9.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



Есть строки, содержащие либо просто слова, либо слова начинающиеся с дефиса, причем длина этих строк не фиксирована, т.е. может содержать одно и более таких слов:

$string = "word1 word2 -word3 -word4 word5";
$string = "word1 word2 -word3 -word4 -word5 -word6";
$string = "word1 word2";

и т.д. 

Нужно парсить строку таким образом: слова, начинающиеся с дефиса (-wordxx) заносить в массив @arguments, а слова начинающиеся без дефиса (wordxx) заносить в массив @commands.

я написал такой код:

Код

      $command=<PARENT>;
      while ($command =~ m/(\S+)/g) {
        $word = $1;
        if ($word =~ /^-/) {$word =~  s/-//; push @arguments, $word;}
        else {push @commands, $word;}
      }


Вопрос: насколько это оптимальное решение данной задачи?
PM MAIL   Вверх
alezzz
Дата 5.9.2011, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Работает -- не трогай, но я бы так сделал:
Код

while ($command =~ /(-)?(\S+)/g){
    if ($1){
        push @arguments, $2;
    } else {
        push @commands, $2;
    }
}

PM MAIL   Вверх
loginn
Дата 5.9.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



круто. ни добавить ни убавить smile
спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.1093 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.