«Камчатский форум» logo

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить · Открыть тему
> Регулярные Выражения, в помощь программистам
Vetinary
20.03.2005, 6:18
Сообщение #1


Заслуженный участник
*****

Награды: 3
Группа: VIP
Сообщений: 818
Регистрация: 18.09.2004

Репутация: 20 [ - / + ]


лично я терпеть не могу написание регулярных выражений... ну не сложилось у меня с ними как-то, и всё тут... при необходимости написать что-то впадаю в ступор, начинаю громко скрипеть зубами и лезть на близлежащие стены...
увы, в таком ужосном положении я вовсе не одинок... вот именно для таких, как я была создана замечательная программка: RegEx Coach... нет, она не пишет за программиста регулярное выражение, но помогает более-менее понять принцип их работы и показывает "на лету" что Вы моежете из того или иного выражения получить... отображает все вхождения в строке и много-много всего... на мой взгляд, ну ОООочень полезная весчь для тех, кто мучается, выискивая нужный шаблон нахождения в строке...
на скрине изображены мои потуги распарсивания URL'а темы (URL взят не из исходника, а просто скопирована ссылка)... жёлтым подсвечены все вхождения, оранжевым - то, что я получу, если, скажем, в PHP напишу что-то типа $result = preg_replace($pattern, '\\2', $string) ($pattern - мой regexp, $string - распарсиваемая строка)
весит сие чудо всего 2,3 Мб - могу кинуть на почту (хостинг у меня временно отключен за неуплату, так что выложить не могу, потому как выходные, а оплачу только в понедельник), после понедельника (вторника) будет доступно на http://crizis.net.ru где-нить в папке soft


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
"Коммерчески успешно принародно подыхать,
Об камни разбивать фотогеничное лицо,
Просить по-человечески, заглядывать в глаза
Добрым прохожим..."
© Янка, "Продано"

Mac OS X Hints — секреты Mac OS X
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
21.03.2005, 7:21
Сообщение #2


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Очень ждем, я в регулярных выражениях тоже не очень силен, хотя надо будет как-нибуд пересилить себя и все-таки разобраться, просидев сутки за книжками/доками.. smile.gif


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^
Vetinary
21.03.2005, 8:13
Сообщение #3


Заслуженный участник
*****

Награды: 3
Группа: VIP
Сообщений: 818
Регистрация: 18.09.2004

Репутация: 20 [ - / + ]


Цитата(Ilya V. Rudomilov @ 21/03/2005, 8:21)
Очень ждем, я в регулярных выражениях тоже не очень силен, хотя надо будет как-нибуд пересилить себя и все-таки разобраться, просидев сутки за книжками/доками.. smile.gif

признаться, я немало всяких книг и пособий читал - всё равно ни черта не помогло... только эта программка более-менее выручает... smile.gif


--------------------
"Коммерчески успешно принародно подыхать,
Об камни разбивать фотогеничное лицо,
Просить по-человечески, заглядывать в глаза
Добрым прохожим..."
© Янка, "Продано"

Mac OS X Hints — секреты Mac OS X
Офлайн · Карточка · Приват
^
Vetinary
21.03.2005, 8:25
Сообщение #4


Заслуженный участник
*****

Награды: 3
Группа: VIP
Сообщений: 818
Регистрация: 18.09.2004

Репутация: 20 [ - / + ]


итак, ввиду того, что понадобилась почта, пришлось купить карту на WebMoney и проплатить хостинг уже сегодня, а посему, можете качать программку: http://crizis.net.ru/soft/regex_coach/regex-coach.exe


--------------------
"Коммерчески успешно принародно подыхать,
Об камни разбивать фотогеничное лицо,
Просить по-человечески, заглядывать в глаза
Добрым прохожим..."
© Янка, "Продано"

Mac OS X Hints — секреты Mac OS X
Офлайн · Карточка · Приват
^
Rownt
22.03.2005, 20:10
Сообщение #5


Учитель созерцания
*******

Награды: 7
Группа: ??????
Сообщений: 3 261
Регистрация: 04.04.2004

Репутация: 25 [ - / + ]


Если бы еще кто нибудь из мэтров намекнул ламерку непутевому, о чем идет речь...smile.gif
Слушать вас интересно, но уж больно глупо себя чувствую. Любопытство разбирает. Кому лень объяснять, пусть кинет ссылки...


--------------------
... сами не летаем и другим не дадим...:)

Камчатская студия дизайна Art Fashion Line
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
23.03.2005, 3:03
Сообщение #6


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Цитата(Rownt @ 22/03/2005, 17:10)
Если бы еще кто нибудь из мэтров намекнул ламерку непутевому, о чем идет речь...smile.gif
Слушать вас интересно, но уж больно глупо себя чувствую. Любопытство разбирает. Кому лень объяснять, пусть кинет ссылки...

Зачем пользоваться регулярными выражениями
Когда нужно остановиться и перейти на новый уровень.


— Когда нужно пользоваться регулярными выражениями?
— Всегда, когда они позволяют решить задачу наиболее эффективным способом.

Ответ на вопрос «Применять регулярные выражения или нет?» зависит не только от задачи, но и от наличия опыта. Регулярные выражения — не самое простое из того, что есть в программировании. И не всегда сразу легко разобраться в сложной конструкции. Но как бы там ни было, есть задачи, которые можно решить с помощью регулярных выражений на порядок быстрее.

Регулярные выражения незаменимы в любых программах обработки текста: утилитах, выполняемых из командной строки, механизмах поиска/замены в текстовых редакторах, обработчиках форм на веб-сервере и т. д. Если есть способ описать регулярными выражениями то, как должен выглядеть текст, нужно ими пользоваться.

Регулярные выражения — это модель реального языка. Например, если мы можем дать четкое описание некоторой лексемы, то это описание можно без искажений перенести в шаблон регулярного выражения. Поэтому, создавая свои шаблоны, нужно стремиться думать не отдельными символами, а более общими понятиями.

Пример
Имя переменной в некотором языке программирования должно состоять из букв (в любом регистре), цифр и символов подчеркивания, причем первый символ должен быть либо буквой, либо символом подчеркивания. Этими же словами можно прочитать соответствующие регулярное выражение /[a-z_][a-z_0-9]*/i: буква или символ подчеркивания, за которой следует любое число букв, цифр или подчеркиваний.

Как только покажется, что построенный шаблон начинается превращаться в образчик ASCII-графики, следует остановиться. Во время конструирования шаблона порой обнаруживается слишком много тонких моментов, которые приходится учитывать в выражении. Из-за этого оно становится неповоротливым (и, следовательно, одноразовым: если потребуются измнения, скорее всего придется начать сначала). Шаблонов из сотен символов можно избежать, выделив лексические части меньшего размера.


Пример
Выделение значимых частей можно продемонстрировать на том же примере шаблона для имен переменных. Шаблон (или его часть) допустимо вынести в предварительно скомпилированный образец, например, так:

my $name = qr/[a-z_][a-z_0-9]*/i;
if ($text =~ /^$name$/) {...};

Следующий шаг расчленения шаблона — выделение классов символов, после чего итоговый шаблон принимает предельно ясную структуру /$alpha $alnum*/x:

my $alpha = qr/[a-z_]/i;
my $num = qr/\d/;
my $alnum = qr/$alpha|$num/;
my $name = qr/$alpha $alnum*/x;
if ($text =~ /^$name$/) {...};

Часть логики сложного шаблона обычно лучше вынести в программный код, оставив на регулярное выражение лишь поиск или проверку относительно простых правил. При этом часть алгоритма будет содержаться в регулярных выражениях, а часть — в окружающей программе. Интересно, что и программный код, и регулярные выражения получаются предельно простыми независимо от сложности исходной задачи. То, что тяжело реализовать в шаблонах, лекго сделать программно, и наоборот, то что с трудом (и большой тратой времени) поддается программированию, легко выразить шаблоном регулярных выражений.

Пример
Типичная задача для веба: отыскать в тексте адреса и переделать их в гиперссылки <a href=...>. Задача осложняется необходимостью следить за тем, чтобы не изменить уже существующие в исходном тексте ссылки (одного пропуска тегов здесь недостаточно). В статье «Выделение адресов» показан вариант решения, в котором алгоритм распределен между регулярными выражениями и программой на Perl.

На применение регулярных выражений влияет и их доступность в языке программирования. Например, если они встроены в Perl, то и пользоваться ими проще, чем в программах на C++.

Пример неудачного применения регулярных выражений — разбор XML-кода. Регулярные выражения хорошо подойдут для лексического анализа текста (поиск слов, имен тегов и атрибутов, символов-ограничителей, их комбинаций и т. д.). Синтаксический анализ (проверку того, могут ли найденные лексемы следовать одна за другой) лучше перенести в программный код.

Однако, будущее регулярных выражений (которое просматривается в новом языке Perl 6), говорит о том, что с помощью регулярных выражений возможно построить на порядок более сложные конструкции — а именно, грамматики языков программирования.

Источник - http://webcode.ru/re/why/


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^
Vetinary
23.03.2005, 5:39
Сообщение #7


Заслуженный участник
*****

Награды: 3
Группа: VIP
Сообщений: 818
Регистрация: 18.09.2004

Репутация: 20 [ - / + ]


1. 2Rownt к чему это было-то? пособий в сети великое множество... самый лучшый, которое более-менее в примерах занимательно объясняет что и как видел когда-то на delail.phpclub.ru - в остальном редко встречаломь что-то нормальное...

2. просто по теме вчера на работе поставили конкретное задание - "сграбить" контент одного сайта... сайт представляет из себя каталок продукции (там и деление по страницам, и много всего всего интересного и разного)... получаемый контент (включая картинки товаров) поместить в базу и на сервер по опредлённым каталогам (по каталогам, разумеется, картинки)... задача поступила вчера в часа 4 дня... сегодня часам к 5 дня с задачей успешно справился... благодаря своему коллеге, который кропотливо и подробно объяснял мне принцип работы рег. выражений понял их наконец-то (2 года осилить не мог!)... блин, аж горд собой... megalol.gif


--------------------
"Коммерчески успешно принародно подыхать,
Об камни разбивать фотогеничное лицо,
Просить по-человечески, заглядывать в глаза
Добрым прохожим..."
© Янка, "Продано"

Mac OS X Hints — секреты Mac OS X
Офлайн · Карточка · Приват
^
Rownt
23.03.2005, 7:15
Сообщение #8


Учитель созерцания
*******

Награды: 7
Группа: ??????
Сообщений: 3 261
Регистрация: 04.04.2004

Репутация: 25 [ - / + ]


Мда....
В общих чертах понял.
Понял так же, что пока изучение отложу до лучших времен, пока не припечет как Родиону...smile.gif


--------------------
... сами не летаем и другим не дадим...:)

Камчатская студия дизайна Art Fashion Line
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
23.03.2005, 7:51
Сообщение #9


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Цитата(Rownt @ 23/03/2005, 4:15)
Мда....
В общих чертах понял.
Понял так же, что пока изучение отложу до лучших времен, пока не припечет как Родиону...smile.gif

Не-программистам это вовсе не к чему, да и большинство программистов обходится. К примеру, я до сих пор в тонкостях не разбираюсь...


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
28.01.2006, 20:52
Сообщение #10


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Намедни вечером случайно достал дома книжку по PHP и наткнулся на главу по регулярным выражениям. Очень даже интересно оказалось. smile.gif Оказалось, что очень многие надоедливые разборы строк с помощью strpos, substr и пр. можно было очень удобно и легко сделать с помощью регулярных выражений. Да и рег.выражения освоить несложно - стоит сделать памятку и постоянно ею пользоваться. smile.gif Честно говоря, я до конца все не запомнил, но суть понял - это в 10 раз проще, нежели сложные обработки строк иными способами. smile.gif


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
24.11.2008, 16:09
Сообщение #11


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Очень рекомендую для изучения статью http://phpclub.ru/detail/article/regexp_1 Все максимально просто и ясно.


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^
nitro80
14.04.2009, 10:03
Сообщение #12


Элита
*******

Награды: 4
Группа: ?????????
Сообщений: 1 682
Регистрация: 26.05.2005

Репутация: 5 [ - / + ]


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

Илья, а что за книга?


--------------------
Офлайн · Карточка · Приват
^
Ryryka
15.04.2009, 8:45
Сообщение #13


Заслуженный участник
*****

Награды: 4
Группа: ?????????
Сообщений: 719
Регистрация: 05.12.2007

Репутация: 3 [ - / + ]


есть книжка Фридл Дж.Регулярные выражения.Библиотека программиста.2003
Выложила на ftp://ftp.kamchatka.ru/share/
Изображение
формат DJVU
размер 7661 КБ


--------------------
Наша Камчатка - самый райский уголок! Наша Россия - богата самыми лучшими людьми!
Офлайн · Карточка · Приват
^
Ilya V. Rudomilov
16.04.2009, 20:51
Сообщение #14


Путяра, пшёл вон!
*******

Награды: 9
Группа: ??????
Сообщений: 14 825
Регистрация: 30.03.2004

Репутация: 36 [ - / + ]


Цитата
Илья, а что за книга?

Вроде бы Э. Гутманс, С. Баккен, Д. Ретанс, "PHP5. Профессиональное программирование" - http://www.kamforum.ru/index.php?s=&showto...ndpost&p=107906


--------------------
Обязательно к изучению - мой блог о моей жизни в Чехии! И хватит спрашивать "Почему же Чехия?.." - все ответы описаны уже.
Офлайн · Карточка · Приват
^

Ответить · Открыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Код кнопки 88x31 Текстовая версия Русская версия Invision Power Board v2.1.7 © 2006  IPS, Inc.