Автор Тема: Есть текст, как взять из него первые 10 слов?  (Прочитано 6483 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Кол-во слов конечно любое, требуется сделать prewievn топиков гостевой книги на начальной странице сайта.
Ещё вопросец, никто не подскажет где можно взять готовые шаблоны регулярных выражений с примерами, можно на англ.?

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Есть текст, как взять из него первые 10 слов?
« Ответ #1 : 05 Августа 2002, 18:59:43 »
а зачем регулярные выражения? эксплодь текст в массив через пробел и выводи опять же через пробел первые 10 элементов массива
ну, будем исповедоваться?

Оффлайн ESE

  • Фанат
  • Постоялец
  • ***
  • Сообщений: 172
  • +0/-0
  • 2
    • Просмотр профиля
    • http://comp.hobi.ru
Есть текст, как взять из него первые 10 слов?
« Ответ #2 : 05 Августа 2002, 20:40:31 »
Ну да, гдето так
$n=10;#сколько слов вывести
$text="раз  два три четыре пять шесть семь восемь девять десять одинадцать двинадцать и т.д";
$text=~s/\\s{2}/ /g;
@text=split(/ /,$text);
for ($i=0;$i<$n;$i++){
$new_text.="$text[$i] "}
print $new_text;
У програмиста две руки: левая и !левая
welcome

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Есть текст, как взять из него первые 10 слов?
« Ответ #3 : 05 Августа 2002, 21:50:03 »
Yuraz
($new_text) = ($old_text =~ /^(\\S+ \\S+ \\S+ \\S+ \\S+ \\S+ \\S+ \\S+ \\S+ \\S+)/);
если слов не меньше 10.

Unregistered

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #4 : 05 Августа 2002, 23:35:13 »
$_=\'Word w w44 ююю f g e r t c vbvn djf\';
$_=~m/(([А-Яа-яЁё\\w]+\\s?){0,5})/;
print $1;

#число в скобочках {5} это число искомых слов

ююю

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #5 : 05 Августа 2002, 23:37:45 »
Я бы даже сказал вот так
$_=\'Word w   w44 ююю f g e r t c vbvn djf\';
$_=~m/(([А-Яа-яЁё\\w]+\\s*){0,5})/;
print $1;

#число в скобочках {5} это число искомых слов

ююю

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #6 : 06 Августа 2002, 00:09:21 »
#Гм а если за первым словом идёт например пример кода
$_=\'Пример my $x; for(1..10){ print $x++;} вот так вот работает инкримент\';
 
#1
$_=~m/((.*?\\s{1,}){0,5})/;
print "$1\\n";
#2
@array[1..5]=$_=~m/([А-Яа-яЁёA-Za-z]+)\\s{1,}/g;
print "@array";

#вобщим ИСКАТЬ не проблема Определятся что нужно искать ВОТ ПРОБЛЕМА

Unregistered

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #7 : 06 Августа 2002, 13:18:50 »
#ююю , ну зачем же давать человеку нерабочие советы?

100% рабочий вариант:
#!/usr/bin/perl -w
use strict;
my $x = \'zxc vbn m,. asd 123 345 g2g 5jk\'; #просто текст
my ($a)=($x=~/^((\\S+\\s+){1,5})/); #сколько нужно слов
$a =~ s/\\s$//; #если нам не нужен в конце пробел
print "-$a-\\n"; #чтоб видеть где конец, а где начало

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Есть текст, как взять из него первые 10 слов?
« Ответ #8 : 06 Августа 2002, 13:48:11 »
Всем спасибо,
даже как то некрасиво, но опять у меня проблема, и открывать топик из за этого не хочется, может ещё кто сюда зайдёт....
В общем задачка простая, на Delphi это реализуется так,
a:=random(100);  // любое число от 0 до 100

А как тоже самое на перле?
Делаю так, как по книге: (мне надо что бы $v была от 1 до 10)

$a=rand(10);
$v=sprintf "%.0f", $a;
$v+=1;

print $v;

## a в ответ ничего...

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Есть текст, как взять из него первые 10 слов?
« Ответ #9 : 06 Августа 2002, 14:10:46 »
Цитировать
## a в ответ ничего...


А я делаю так:

$a = int rand(10000000);

и у меня все ништяк, восьми(вроде)значное число, точнее от 0 до восьмизначного.
Все болезни от нервов, только сифилис от удовольствия

Unregistered

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #10 : 06 Августа 2002, 15:28:25 »
А где не рабочий совет КОНКРЕТНЕЙ

$_=\'Пример my $x; for(1..10){ print $x++;} вот так вот работает инкримент\';

#1
$_=~m/((.*?\\s{1,}){0,5})/; #ИЩИ ВСЁ ЧТО ПОПАЛО РАЗДЕЛЁННОЕ ПРОБЛНЫМИ СИМВОЛАМИ
print "$1\\n";
#2
@array[1..5]=$_=~m/([А-Яа-яЁёA-Za-z]+)\\s{1,}/g;#ИЩИТ ТОЛЬКО СЛОВА ТОЕСТЬ $F это не слоао и for(1..0){ это тоже не слово
print "@array";


#имхо прежде чем говорить нужно проверять
Я ищё раз говорю что есть сложность с определением того что мы хотим найти

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Есть текст, как взять из него первые 10 слов?
« Ответ #11 : 06 Августа 2002, 16:19:04 »
Цитировать
$a=rand(10);
$v=sprintf "%.0f", $a;
$v+=1;

print $v;

## a в ответ ничего...


Странно... У меня работает.
TANSTAAFL

Unregistered

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #12 : 14 Августа 2002, 11:33:42 »
Как-то все сложно вы все предлагаете... А я бы так сделал:
@words=split(/ /, $text);
@words10=join(" ", @words[0..9]);
print "@words10";
Кажется, именно это имел ввиду AliMamed (пост №2).

Unregistered

  • Гость
Есть текст, как взять из него первые 10 слов?
« Ответ #13 : 15 Августа 2002, 15:51:50 »
Прошу прощения, предыдущий пост относился к первому вопросу, невнимательно просмотрел. Что касается второго вопроса, то у меня
$a=rand(10);
$v=sprintf "%.0f", $a;
$v+=1;

print $v;
при проверке сработало "на ять". Проверял в DZSoft Perl Editor.

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Есть текст, как взять из него первые 10 слов?
« Ответ #14 : 15 Августа 2002, 19:48:37 »
А так слабо?

$text = "Your super puper message on board";
print join(\' \', ($text =~ /(\\w+)/g)[0..3]);

Выдернет то что вам нужно, кол-во слов задаем там где цифра 3.
Напечатает
Your super puper message
Хоть решение уже и было, написал для того, чтобы увидели другие возможности регуляров.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28