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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка, Выдрать конкрeтную строку 
V
    Опции темы
DiverD
Дата 26.11.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот ситуация:
В массиве есть некий текст который содержит строку /a/b/bla (или похожие строки типа /a/b/ee /g/f/eee dr.)
Как мне их выдрать???
как сотавить регулярку???

Это сообщение отредактировал(а) sergej.z - 28.11.2005, 20:41
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Kiber_rat
Дата 26.11.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Код

#!/usr/bin/perl
use strict;
use warnings;
my @array = ('qweas','/a/d/v/b','/a/eee/c/rty');
for (@array) {
    m!((?:/?\w+\s?)+)! ? print "$1\n" : next;
}



--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
DiverD
Дата 26.11.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



zenX ща попробую
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Kiber_rat
Дата 26.11.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



10x - это много, лучше плюсик в репутацию ;)


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
DiverD
Дата 26.11.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



2 Kiber_rat
нумнога не так.
Я плоха объяснил:)
Вот смотри есть сдаровенный файл которы содержит пути к фалом подобным образом:
# comenta file_dir /dir/fir/file.doc
# comenta file_dir /pub/fir/exaple.pl
И мне нужна выдрать все пути.. (порядка 30)
Нада как то от однаго слеша ко 2у:)
и мало знающий,помоги мэн!
:)

--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Kiber_rat
Дата 26.11.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Код
#!/usr/bin/perl    
use strict;    
use warnings;    
open FH, "<$ARGV[0]" or die "Can't open file, $!"; # Открываем файл переданный как аргумент
while (<FH>) {
  m!((?:/[^/]+)+)! ? print "$1\n" : next;
}
close FH;
Пример файла, если я правильно понял:
Код

# comment  /dir/dir/dir/file.qwe
# comment  /aaa a/d/v/b/qwe asd.er.tr.qw
# comment  /a/eee/c/rty asd qwe
P.S. Постарайся писать нормально, это все таки не udaff.com и крутости тут такой стиль не добавляет. Ок?

Это сообщение отредактировал(а) Kiber_rat - 26.11.2005, 15:51


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
DiverD
Дата 26.11.2005, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



2 Kiber_rat честно говоря я не понял о какой ты крутости говоришь smile
но udaff.com в 1й раз вижу ! smile

PS: sorry za offtop smile
ps2: Спасибо за помощь!

Это сообщение отредактировал(а) sharq - 27.11.2005, 21:43
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Kiber_rat
Дата 27.11.2005, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Сорри, просто у тебя в предпоследнем сообщении был странный русский язык ;)


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
sharq
Дата 27.11.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



diverd если у тебя файл конкретной структуры, то можно писать регулярное выражение так:
Код

my @array;
while (<FILE>) {
    push @array, [m{^# \w+ \w+ (.*?)$}]->[0];
}


Если ты не уверен в структуре файла, то лучше использовать обобщенный рег.эксп.

smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Kiber_rat
Дата 28.11.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



sharq А ты уверен что твой код работает с файлом такого формата:
Код
# comment  /dir/dir/dir/file.qwe
# comment  /aaa a/d/v/b/qwe asd.er.tr.qw
# comment  /a/eee/c/rty asd qwe
По моему не сработает, поскольку \w не захватит ни слэш ни точку, кроме того comment может подразумевать именно комментарий, т.е. некоторое кол-во слов, а diverd просил путь захватить...

Это сообщение отредактировал(а) Kiber_rat - 28.11.2005, 20:51


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
sharq
Дата 29.11.2005, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Kiber_rat пример приведен для формата
Цитата

# comenta file_dir /dir/fir/file.doc


И это только руководство к действию, а не конкретное решение поставленной задачи. smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
DiverD
Дата 2.12.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



## РПЯТЬ РЕГУЛЯРКАsmile ##

/^#/;
Мне нужна сюда вставить еще к примеру "bla"
т.е. грубо говоря будет выглядеть m/^# и bla/;
Как эта сделать???
Проста до них (perlre) еще не дошол а кусками читать не хочетьсяsmile[/i]

Это сообщение отредактировал(а) diverd - 2.12.2005, 18:11
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
korob2001
Дата 2.12.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Если сразу после символа коментария, нужно вставить строку bla-bla, то так:
Код

#!/usr/bin/perl -w
use strict;
my $str = "# This is a test string";
$str =~ s/\s*#\s*(.*)$/# bla-bla $1/;
print $str;

Если я не верно понял тебя, тогда поясни вопрос.

Это сообщение отредактировал(а) korob2001 - 2.12.2005, 19:55


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Breezend
Дата 30.3.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



всем привет. Вопрос :
Есть файл. Как из этого файла вырвать и вывести строки содержащие какое либо значение(допустим цифры или греч алфавит).
То есть:
Я вас любил 11,
любовь еще быть может,
и т.д.

нужна полная строка "Я вас любил 11,"

спасибо. smile
PM MAIL   Вверх
korob2001
Дата 30.3.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата

нужна полная строка "Я вас любил 11,"

И причём здесь регулярные выражения? Читай файл построчно. Или я чего-то не понял? smile


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


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

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


 




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


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

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