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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбить строку на слова 
:(
    Опции темы
zomber
Дата 10.5.2011, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



надо разбить строку на слова, слова запомнить в некоторый массив

вот, набросал для начала такое примитивное выражение -
(?:(.+)\s+)*

вопрос, как слова запомнить в массив
тем более, что неизвестно заранее, сколько будет слов

PM MAIL   Вверх
FreeGanzter
Дата 10.5.2011, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тем более, что массиву не нужно объявлять сколько элементов он будет содержать он сам создает автоматический место под каждый элемент
я новичек но пропустил все это регуляруой через цикл после каждого пробела заносить в массив к примеру функцией foreach

Это сообщение отредактировал(а) FreeGanzter - 10.5.2011, 06:46
PM MAIL   Вверх
Pfailed
Дата 10.5.2011, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Обычно так делают
Код

@a = "some line" =~ /\b(.+?)\b/g;



--------------------
PM MAIL   Вверх
dixoNICH
Дата 11.5.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Pfailed @ 10.5.2011,  08:03)
Обычно так делают
Код

@a = "some line" =~ /\b(.+?)\b/g;

Можно так.
Код

$_="hello world, string, while true; bab' sa";
@ls=split/[,.';" ]/;
print @ls;


Ваш вариант, если дать ему строку со знаками препинания их тоже возьмёт, как слово.  Ну и для русского текста надо use locale не забыть smile

Это сообщение отредактировал(а) dixoNICH - 11.5.2011, 14:22
PM MAIL   Вверх
zomber
Дата 15.5.2011, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Pfailed @ 10.5.2011,  08:03)
Обычно так делают
Код

@a = "some line" =~ /\b(.+?)\b/g;

что-то тут не так

Код


$line = "aaa bbb aaa ccc";

  @words = $line =~ /\b(.+?)\b/g;
  
  foreach $word (@words)
  {
   print "<<$word>>";
  }



результат

<<aaa>><< >><<bbb>><< >><<aaa>><< >><<ccc>>

PM MAIL   Вверх
alezzz
Дата 15.5.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



а чем такой способ не нравится:
Код

@words = $line =~ /\w+/g;


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


 




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


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

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