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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по регулярным выражениям 
:(
    Опции темы
gcc
Дата 20.2.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


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

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



1) подскажите, что тут означет знак '#' "решетка" и '\1' и '\s*'?

Код

        $var_value =~ s#^\s*(['"]?)(.*)\1#$2#;



2) а скажите кто видел задачки практические по рег. выр. ? просто хочется знать как применять их в разные случаях...
 я делал только то что мне нужно было, но что-то я многое незнаю как применить по рег. выр. или это не нужно?

в гугле не нашел

http://www.google.com.ua/#hl=uk&q=%D0%...37666c956da6ac9
PM WWW ICQ Skype GTalk Jabber   Вверх
Egik2
Дата 20.2.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(gcc @  20.2.2010,  10:57 Найти цитируемый пост)
1) подскажите, что тут означет знак '#' "решетка" и '\1' и '\s*'?


# - используется вместо стандартного разделителя /, то есть одно и то же:
s/bla/bla/ и s#bla#bla

\1 - будет содержать первое "пойманное" скобками значение, если ты хочешь его использовать дальше в регекспе, то есть, в твоем случае:
Код

$var_value =~ s#^\s*(['"]?)(.*)\1#$2#;

это будет
 
Код

['"]?


\s* означает 0 или более разделительных символов.

Добавлено через 6 минут и 23 секунды
Если хочешь почитать что-нить по регекспам, то очень помогает, если не читал раньше
Программирование на Perl от самого Ларри Волла и друзей. Основополагающая книга по Perl, и 
регулярные выражение описаны великолепно  smile 
Еще можно:
Фридл Дж. Регулярные выражения (2-е изд.), Питер 2003, 464 с., ISBN 5-272-00331-4
Правда у меня у самого руки до нее не дошли пока  smile 

Это сообщение отредактировал(а) Egik2 - 20.2.2010, 11:18


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
gcc
Дата 20.2.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


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

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



Egik2, 
Программирование на Perl  - эта книжка по-моиму слабая, я много книг читал таких и на английском смотрел, тоже
мощные на русском книги, вот эти  2-3 издание "Рецепты для профессионалов"

посмотрю еще вашу....

НО все таки для разных задач нужно абсолютно по разному писать рег. выр.

документацию я читал много раз, но не всегда понимаю как оно должно следовать в разные ситуациях!!!!


======

а подскажите что значит эта опция   -0x0a  ? и какие еще есть опции похожие ?

Код

perl -MData::Dumper -0x0a -lne ' $hash->{$1}++ while $_ =~ /from=\<([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)\>/smg; END { print Dumper $hash }' /var/log/maillog



=====


еще есть одно наверное сложное регулярное выражение:

у меня есть в тексте 


Код

http://www.ggg.com
[URL]http://www.ggg.com[/URL]
[URL=http://www.ggg.com]ннннн[/URL]


нужно рег. выраджение которые преобразует это все в тексте в вид html 
перевести с BB в HTML

Код

<a href="http://www.ggg.com"> df </a>


я не понимаю как это сделать?


Это сообщение отредактировал(а) gcc - 21.2.2010, 18:44
PM WWW ICQ Skype GTalk Jabber   Вверх
Logo
Дата 21.2.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

$_ = q{
http://www.ggg.com
[URL]http://www.ggg.com[/URL]
[URL=http://www.ggg.com]ннннн[/URL]
};

s{
  (?<name>(?<url>\bhttps?://[\w-]+ (?:\.[\w-]+)* (?:\.\w+)? (?:/.*?(?=[.,?]?(?:\s|$)))?  )) |
  \[URL\](?<name>(?<url>(?s:.*?)))\[/URL\] |
  \[URL=(?<url>[^\]]*)\](?<name>(?s:.*?))\[/URL\]
}
{<a href="$+{url}">$+{name}</a>}xg;

print;


Цитата

Фридл Дж. Регулярные выражения (2-е изд.), Питер 2003, 464 с., ISBN 5-272-00331-4

Да, хорошая книга. С осени уже 3-е издание на русском. Правда про Perl там раздел не обновлен, а для понимания принципов и 2-ого достаточно.
PM MAIL   Вверх
gcc
Дата 21.2.2010, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


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

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



Logo, 

спасибо, как-то так наверное можно...

но у меня не работает

Код

./yy.pl
Sequence (?<n...) not recognized in regex; marked by <-- HERE in m/
  (?<n <-- HERE ame>(?<url>\bhttps?://[\w-]+ (?:\.[\w-]+)* (?:\.\w+)? (?:/.*?(?=[.,?]?(?:\s|$)))?  )) |
  \[URL\](?<name>(?<url>(?s:.*?)))\[/URL\] |
  \[URL=(?<url>[^\]]*)\](?<name>(?s:.*?))\[/URL\]
/ at ./yy.pl line 20.



Код

 perl -v

This is perl, v5.8.9 built for i386-freebsd-64int
(with 1 registered patch, see perl -V for more detail)





Это сообщение отредактировал(а) gcc - 21.2.2010, 17:49
PM WWW ICQ Skype GTalk Jabber   Вверх
Logo
Дата 21.2.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



5.8 потому что...
Тогда так должно работать.
Код

#!/usr/bin/perl

$_ = q{
http://www.ggg.com
[URL]http://www.ggg.com[/URL]
[URL=http://www.ggg.com]ннннн[/URL]
};

s{
  (\bhttps?://[\w-]+ (?:\.[\w-]+)* (?:\.\w+)? (?:/.*?(?=[.,?]?(?:\s|$)))?  ) |
  \[URL\]((?s:.*?))\[/URL\] |
  \[URL=([^\]]*)\]((?s:.*?))\[/URL\]
}
{
  $1 ? "<a href=\"$1\">$1</a>" :
  $2 ? "<a href=\"$2\">$2</a>" :
       "<a href=\"$3\">$4</a>"
}exg;

print;

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


 




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


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

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