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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> символ конца строки, есть такое в Perl?и вообще - есть такое? 
:(
    Опции темы
shootnix
Дата 20.9.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



Здрастуйтэ. 
Возникла проблема определения конца строки - как это реализовано в Perl? Вот знаю что к примеру в Delphi точно что-то такое есть... а в Perl?

А вообще, вопрос не из философский побуждений задан - есть задача следующего характера:
Надо найти все данные (строку), помещённые между каким-то символом, стоящим строго в начале строки и строго в конце. Использование "\n" не совсем подходит, т.к. это, по сути, символ НОВОЙ строки, а мне нужно конец старой. 

Плиз хелп. Можно просто ссылку на доку какую-нить. Или сразу код ;)
PM WWW ICQ   Вверх
trigger
Дата 20.9.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



дай мыло вышлю доку по регулярке в перл

или вот http://wmate.ru/ebooks/book19.html тока регица нада

Это сообщение отредактировал(а) trigger - 20.9.2006, 17:34
PM MAIL WWW ICQ   Вверх
Nab
Дата 20.9.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



$ - символ указывающий на конец строки ;)


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
amg
Дата 21.9.2006, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Цитата(shootnix @  20.9.2006,  17:21 Найти цитируемый пост)
символ конца строки есть такое в Perl?и вообще - есть такое?
Ну как такого может не быть в Perl'е, языке, для которого основная единица данных - именно строка.

Цитата
Надо найти все данные (строку), помещённые между каким-то символом, стоящим строго в начале строки и строго в конце.
Вариантов, как это сделать, очень много. Например исполнить команду
Код
perl -ne 's/^B(.*)E$/$1/ && print' file
Напечатается только те строки файла, которые начинаются с B и кончаются E (без самих B и E).

Цитата
Использование "\n" не совсем подходит, т.к. это, по сути, символ НОВОЙ строки, а мне нужно конец старой. 
Скорее все же наоборот. На "\n" заканчивается строка (если это не мультистрока).


Это сообщение отредактировал(а) amg - 21.9.2006, 07:31
PM MAIL   Вверх
shootnix
Дата 21.9.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



trigger, 
Цитата

или вот http://wmate.ru/ebooks/book19.html тока регица нада
 - спасибо, обязательно почитаю


Nab,
Цитата

 $ - символ указывающий на конец строки ;)

Аха... ток чтот не работает, может регулярка сложная аль ошиба... ещё попробую самостоятельно разобраться ... ну уж если что - к вам ;)


amg, 
Цитата

Напечатается только те строки файла, которые начинаются с B и кончаются E (без самих B и E).

Так ведь в этом и есть суть моего вопроса - Надо чтобы этим Е был признак конца строки - есть такое в Perl?? 

Цитата

Скорее все же наоборот. На "\n" заканчивается строка (если это не мультистрока).


Опять-таки не совсем верно -- "\n" - это признак перехода на другую строку а не конкретно признак конца данной строки. К примеру, если файл содержит только одну строку, то, скорее всего, в конце "\n" просто не будет. Попробуйте сами - напишите строку в файл без нажатя на Ентер и проверьте на наличиев этой строке признака "\n"

Добавлено @ 19:41 
Да, кстати, если не ошибаюсь, автор этой книги (http://wmate.ru/ebooks/book19.html ) - Perldoc smile А именно кто - уже не помню. Перевел Вадим Хомаха, кажется...
PM WWW ICQ   Вверх
amg
Дата 22.9.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Так, давайте по-порядку.
Был поставлена задача:
Цитата(shootnix @  20.9.2006,  17:21 Найти цитируемый пост)
...найти все данные (строку), помещённые между каким-то символом, стоящим строго в начале строки и строго в конце.
и предложено решение
Код

perl -ne 's/^B(.*)E$/$1/ && print' file
perl -lne 'chomp; s/^B(.*)E$/$1/ && print' file
Напечатается только те строки файла, которые начинаются с B и кончаются E (без самих B и E). (Второй вариант дает более красивую печать, если последняя строка заканчивается не на \n, а на EOF).
shootnix, чем не устраивает это решение?

Цитата(shootnix @  21.9.2006,  19:35 Найти цитируемый пост)
Так ведь в этом и есть суть моего вопроса - Надо чтобы этим Е был признак конца строки
Но это же уже другая задача! Т.е. надо только строки, кончающиеся \n ? (все строки, начинающиеся с определенного символа, кроме последней, если она заканчивается на EOF) ?

Приведите, пожалуйста, кусок своих данных, и то, что должно из них получиться, тогда будет понятнее.

PM MAIL   Вверх
shootnix
Дата 22.9.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



amg, ОК я, по-моему, уже сказал что надо - зачем разжигать дискуссии?
Итак, снова формулирую задачу:

Дано: текст такого плана:

Код

@ текст текст текст текст
@ текст текст текст текст
@ текст текст текст текст
@ текст текст текст текст


Надо:

    Вытащить этот текст после @ (символ условный - какая, в сущности, разница?) весь без остатка

Сопутствующие условия:

    Текст может содержать какие угодно символы: буквы, цифры и т.п.

В чем тогда проблема?

    Если использовать "\n" - последняя строка-таки не вытаскивается, т.к, "\n" - это символ перехода на новую строку а не конец данной.
PM WWW ICQ   Вверх
Nab
Дата 22.9.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А текст это вы из файла получаете, или откуда?
Потому как проблема эта может возникнуть только если у вас весь текст находиться в одной переменной, которую и нужно распарсить...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
shootnix
Дата 22.9.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



из файла да -- текст парсю построчно так что разницы нет -- ладно раз логически не получается мыслить, давайте в лоб: как найти последний символ в строке? вот теперь этотсимвол будет "признаком конца строки" -- вот... тогда надо вырезать строку от символа "@", например (не включительно) и до этого последнего символа (включительно). 
PM WWW ICQ   Вверх
amg
Дата 22.9.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



shootnix, проверьте, пожалуйста, (запустив из коммандной строки), что напечатает
Код

perl -lne "chomp; s/^@// && print" file


Добавлено @ 11:42 
Или нужен обязательно отдельный скрипт?

Добавлено @ 11:55 
Сейчас проверил в винде, последняя конструкция вроде работает, а за предыдущие приношу извинения: они в винде не работают из-за "неправильных" кавычек (см. здесь)

Это сообщение отредактировал(а) amg - 23.9.2006, 09:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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