среда, 19 августа 2009 г.

Из логов дневника сделать внятный текст.

Регулярные выражения, Часть I

Глава 1. Шерлок Холмс спешит на помощь вебпрограммисту или регулярные выражения на пальцах.

Введение.

Каждый веб-программист сталкивался с задачей, когда в произвольном тексте нужно найти какие-то данные по какому-то закону, проверить данные, которые поступили от пользователя, подвергнуть найденные данные сложной модификации. Можно изобретать велосипед, а можно использовать средства, которые используют программисты всего мира. Иной раз кажется, что профи пользуются какими-то инструментами, приемами, которые доступны только им. Разочарую читателя, что профи используют те же средства и инструменты, что и вы, только разница состоит в том, что они ими умеют пользоваться и умеют выбирать, какой инструмент стоит использовать в конкретном случае.

Данный материал призван помочь программистам решать насущные задачи при помощи регулярных выражений. Я постараюсь описать самые основы использования этого инструмента, чтобы вы не смотрели на комбинацию подобную этой: /^(?:http:\/\/)?[-0-9a-z._]*.\w{2,4}[:0-9]*$/ как баран на новые ворота.

Общая задача механизма регулярных выражений - находить или не находить совпадения строки или ее части с шаблоном. Проанализируем первое предложение этого абзаца на предмет непонятных или пугающих слов:

"Механизм регулярных выражений" и "шаблон" - вот два слова, которые меня повергли в уныние, когда я понял, что без использования регулярных выражений мне не обойтись. Имеем какой-то механизм, который что-то ищет и находит либо ищет и не находит, с этим "что-то" связаны такие понятия как строка и шаблон. Вот с них и будем разбираться и ими же и закончим, потому что после того, как мы разберемся, что делает этот механизм со строками и шаблонами, нам не надо будет лезть в учебники по математике и искать, что означают слова "регулярные выражения".

Часть 1.

Где мы видели шаблон? Пойдем к знакомой секретарше и спросим у нее. Правильно, ответ - шаблоны Microsoft Word! Чем отличается шаблон "Календарь" от шаблона "Изысканное резюме"? Данными и способом их подачи. Человек, который хотя бы раз видел и то и другое, без труда будет отличать календарь от резюме. Так почему тогда регулярные выражения пугают программиста? Ведь это почти то же самое! О чем думает человек, который видит календарь и знает что это такое, как он его узнает? Календарь - это документ, который разделен на блоки, каждый блок состоит из цифр, которые соответствуют дням месяца. Каждому месяцу соответствует только один блок, в месяце бывает не больше 31 дня, в феврале не бывает больше 28 (за исключением високосного года), дни, которым соответствует день недели воскресенье или государственный праздник выделены красным, можно продолжить систематизировать данные дальше, указав месяцы в которых ровно 30 и 31 день. Что мы сделали? Мы создали описание календаря, по-другому, мы описали данные, найдя которые в произвольном тексте, можно с определенной уверенностью сказать, что перед нами календарь. Подобное описание я называю шаблоном в контексте разговора о регулярных выражениях.

Грядет день, когда программист будет говорить компьютеру, какую он хочет написать программу, а компьютер будет ее писать, но пока что

Комментариев нет:

Отправить комментарий