Знакомство с регулярными выражениямиВ этом уроке вы узнаете, что такое регулярные выражения и что они могут делать. Назначение регулярных выраженийРегулярные выражения (regular expressions), или сокращенно regex — инструментальные средства, и подобно всем инструментальным средствам, регулярные выражения предназначены для решения очень конкретных проблем. Чтобы узнать, что такое регулярные выражения и что они делают, лучше всего познакомиться с проблемами, которые решаются с их помощью. Рассмотрим следующие сценарии.
Все эти сценарии представляют собой обычные программистские задачи. И все они могут быть решены почти на любом языке, в котором есть условные выражения и операции над строками. Но насколько сложно решить эти задачи? Вам понадобится в цикле перебирать слова или символы по одному, выполнять все типы условных операторов, отслеживать массу флажков, чтобы убедиться, что вы нашли то, что искали, или чтобы быть уверенными, что вы не нашли искомый текст, проверять всевозможные пробельные и специальные символы, и по ходу дела решить еще много подобных задач. И вы должны были бы сделать это все вручную. Но вы можете использовать регулярные выражения. Каждая из предыдущих задач может быть решена с помощью подходящих инструкций, записанных в кратких строках, содержащих текст и специальные инструкции-команды, которые могут выглядеть следующим образом: \b[Сс][Aa][Rr]\b ЗамечаниеНе волнуйтесь, если не понимаете смысл предыдущей строки, — все это будет вскоре объясняться. Как используются регулярные выраженияПросмотрите сценарии еще раз и обратите внимание, что все они относятся к одному из двух типов: либо отыскивается местонахождение информации (поиск текста), либо информация найдена и редактируется (выполняются замены). Фактически это и есть то, для чего используются регулярные выражения: поиск и замена. Каждое регулярное выражение либо ищет текст (выполняет операцию поиска) или ищет и заменяет текст (выполняет операцию замены). Поиск с помощью регулярных выражений
Регулярные выражения используются для поиска тек¬ста, причем разыскиваемый текст может иметь разный вид, как при поиске саг в описанном ранее сценарии. Для начинающих отмечу, что задача может состоять в том, чтобы найти Замечание
Хотите знать, как решается эта задача? Вы фактически уже видели ее решение. Это пример инструкции, приведенный выше: Стоит заметить, что проверка на равенство (т.е. решение задачи вроде: соответствует ли указанный пользователем адрес электронной почты данному регулярному выражению?) и есть операция поиска. Выполняется операция поиска во всей введенной пользователем строке (а не операция поиска подстроки). Замены с помощью регулярных выражений
Поиск с помощью регулярных выражений — очень мощное и очень полезное средство, причем совсем не трудно научиться применять его. Поэтому во многих уроках приводятся примеры выполнения операций поиска. Однако реальная польза регулярных выражений состоит именно в операциях замены, типа тех, что встречались в более раннем сценарии, в котором текстовый URL заменялся настоящим URL, активизирующимся щелчком мыши. Для начинающих отмечу, что для этого требуется определить местонахождение URL в тексте (возможно, для этого нужно выполнить поиск строк, которые начинаются с http://www.forta.com/ заменить на <a href="http://www.forta.com/">http://www.forta.com/</a>
Опция Так что же такое регулярное выражение?Теперь, когда вы знаете, для чего используются регулярные выражения, дадим их определение. Попросту говоря, регулярные выражения — это строки, которые используются для поиска и обработки текста. Регулярные выражения записываются на языке регулярных выражений, т.е. на специализированном языке, разработанном и предназначенном для решения задач: поиска и замены текста. Подобно любому языку, язык регулярных выражений имеет специальный синтаксис и команды, которые вам предстоит освоить, и именно их вы будете изучать по данной книге. Язык регулярных выражений — не полноценный язык программирования. Это обычно даже не программа или утилита, которую можно установить и использовать. Чаще всего регулярные выражения представляют собой миния-зыки, которые встроены в другие языки или программы. Хорошая новость состоит в том, что практически любой современный приличный язык или инструмент поддерживает регулярные выражения. Плохая новость в том, что сам по себе язык регулярных выражений не собирается искать что-нибудь подобно другим применяемым вами языкам или инструментам. Язык регулярных выражений — язык в себе, а совсем не интуитивно понятный язык для выполнения каких-либо очевидных операций. Замечание
Регулярные выражения возникли в научной работе по математике в 1950-х годах. Спустя годы принципы и идеи, заложенные в этой работе, пробились в мир Unix в язык Perl и в утилиты типа Приведем примеры правильных (допустимых) регулярных выражений (их смысл вы вскоре поймете):
Важно уяснить, что синтаксис — самая простая часть в освоении регулярных выражений. Что действительно трудно, так это научиться применять этот синтаксис и разбивать задачи на подзадачи, решения которых находятся с помощью регулярных выражений. Этому нельзя научиться, просто читая книгу; подобно любому языку, вы овладеете языком регулярных выражений, выполняя разнообразные упражнения, а мастерство придет с практикой. Использование регулярных выраженийКак уже отмечалось, для регулярных выражений нет никакой особой программы; это не приложение, которое вы выполняете, и не программное обеспечение, которое вы можете купить или загрузить. Совсем наоборот, язык регулярных выражений реализован в большом количестве программных изделий, языков, утилит и сред разработки. То, как используются регулярные выражения и какие функциональные возможности регулярных выражений экспортируются, зависит от используемого вами приложения. Иногда в приложениях для применения регулярных выражений используются меню и диалоговые окна, а в некоторых языках программирования имеются функции или классы объектов, которые экспортируют функциональные возможности регулярных выражений. Кроме того, не все реализации регулярных выражений одинаковы. Часто есть очень тонкие (а иногда и не очень тонкие) различия в синтаксисе и возможностях регулярных выражений. В приложении А, "Регулярные выражения в популярных приложениях и языках", приведены подробности применения и обращается внимание на многие приложения и языки, в которых поддерживаются регулярные выражения. Прежде чем перейти к следующему уроку, просмотрите это приложение, чтобы изучить особенности применяемого ва¬ми приложения или языка. Чтобы вам было легче освоить материал, вы можете загрузить приложение Regular Expression Tester (испытатель регулярных выражений) с Web-страницы этой книги (http://www.forta.com/books/0672325667/). Данное приложение имеет версии для использования в популярных серверах приложений и языках, а также прямо в JavaScript. Это приложение описано в приложении В, "Испытатель регулярных выражений (Regular Expression Tester)", и оно облегчает и ускоряет процесс экспериментирования с регулярными выражениями. Перед началомПрежде чем приступить к применению регулярных выражений, примите во внимание следующее.
РезюмеРегулярные выражения — одно из самых мощных инструментальных средств обработки текстов. Язык регулярных выражений применяется для записи регулярных выражений (фактически, записанную строку и называют регулярным выражением), причем регулярные выражения используются для выполнения операций замены и поиска. |
||