Главная » Просмотр файлов » regulyarnyie-vyirazheniya-osnovyi

regulyarnyie-vyirazheniya-osnovyi (852744), страница 3

Файл №852744 regulyarnyie-vyirazheniya-osnovyi (Пособие по регуляркам) 3 страницаregulyarnyie-vyirazheniya-osnovyi (852744) страница 32021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

В частности, к их числу относятсятекстовые редакторы ed, sed и vi (vim), а также утилита grep и интерпретируемый С-по­добный язык АWК. В то же время способы реализации регулярных выражений в каждомконеретном случае имели свои особенности.В этой книге я придерживаюсь индуктивного подхода, т.е. мы будем перехо­дить от частного к общему. Поэтому чаще всего буд ут приводиться сначалапримеры и лишь затем - соответствующие теоретические выкладки.Регулярные выражения имеют репутацию трудной темы, однако все зависит от того,как приступить к их изучению.

Существуют, например, совсем простые регулярные вы­ражения:\dгде метасимволу \d соответствует любая одиночная цифра от О до 9. Постепенно услож­няя это регулярное выражение, мы придем в конце главы к выражению следующего вида,которое можно использовать в качестве надежного шаблона для поиска телефонных но­меров в формате записи, принятом в США и Канаде:л (\ (\d{З} \) 1 Л\d{З} [ .-] ?) ?\d{З} [ .-] ?\d{4}$Этому формату соответствуют номера, состоящие из 10 цифр, причем разрешаетсязаключать территориальный код в круглые скобки и использовать дефисы или точкидля разделения отдельных групп цифр.

(Круглые скобки должны быть обязательно пар­ными; использование одиночных круглых скобок не допускается.)В главе 10 вы ознакомитесь с более сложным регулярным выражением для по­иска телефонных номеров, но для целей текущей главы нам вполне хватити того выражения, которое представлено выше.Если вам пока что непонятно, как все это работает, то не огорчайтесь: чуть позжеэто выражение будет детально проанализировано. Даже если вы будете всего лишь по­вторять примеры (и не только в этой главе, но и по всей книге), то вскоре составлениерегулярных выражений станет для вас привычным делом.

Готовы сами в этом убедиться?В этой книге я иногда буду использовать символы Unicode, представленные кодовымиточками - шестнадцатеричными числами, состоящими из четырех цифр. Кодовые точ­ки записываются в виде U+OOOO. Например, запись U+002E представляет кодовую точкудля символа точки (. ).Припожение RegexPalПозвольте представить вам сайт RegexPal (http://regexpal.com). Перейдитена этот сайт в любом браузере, например Google Chrome или Mozilla Firefox. Примерныйвид страницы, которую вы должны увидеть, представлен на рис. 1.1.хRegex Testerсregexpal.con1pal п.1 -1 - �Ja,-a5cript r€"g1llar �xpression testerCase insens1trve J"$ match at line bn::aks�g•x8uddyAndroidRegex ВооkDot matc/1es all tVersion HislDryOptionsBl090[1ic.k ReferenceNeed 11юrе power? �t � а po-,.,erful rege:t tester that 1nso1red Re-QexPaJ.Rouno out your rustery over re-Qe•-,.

tt, � and �Рис. 1.1. Вид страницы RegexPal в окне браузера Google ChromeНа странице имеются два текстовых поля: верхнее и нижнее. Верхнее предназначенодля ввода регулярных выражений, нижнее - для целевого текста. Целевой текст - этонабор строк, к которым вы хотите применить регулярное выражение." ...'�.'16В конце этой и каждой из последующих глав находятся разделы "На заметку",в которых содержатся дополнительные сведения об обсуждавшихся в главетехнологиях и приводятся ссылки на дополнительные источники информации .Размещение подобных сведений в конце главы позволяет не отвлекаться на об­суждение второстепенных деталей в основном тексте и тем самым способству­ет непрерывности изложения более важного материала.Глава 1.

Что такое регулярные выраженияСоответствие тепефонному номеруМы приступаем к нахождению соответствий шаблону телефонного номера с помощьюрегулярных выражений. Введите в нижнем текстовом поле веб-приложения RegexPal сле­дующий телефонный номер:707-827-7019Это номер телефона издательства O'Reilly Media.Попытаемся составить регулярное выражение, позволяющее находить вхожденияэтого номера в произвольном тексте. Это можно сделать множеством способов, но мыначнем с простейшего. Введите в верхнем текстовом поле сам номер в том же виде, в ка­ком ввели его перед этим в нижнем поле (ради бога, не торопитесь вздыхать):707-827-7019После того как вы это сделаете, приложение автоматически подсветит (выделит жел­тым цветом) весь номер, введенный в нижнем окне, от первой цифры до последней(рис.

1.2). Если у вас это получилось, считайте, что вы уже используете регулярные вы­ражения!)(Re99: Т e.sterс�<", r�"-,.-,....,....{,o"'"l!"'"��)'f,-�,�.,'f-'1�"���01/!'IX'!Iregexpal.compal 0.1.; - а ,Ja,·aScript regu]ar •чiression teS1er RegexOuddyCase 1nsens1t1Ve 1"� match at line breaks t •Dot m.:itches all fAndroidRegex Вооk , VefOion llisiorytP-::qE,oOpdonsBlogQ<1ick ReferenceNeed more power? C--et RenexВuddy. а po*rful reoe.( testsrthat lnsp1red Re9e,PalRound oul your master1 OYer rege, "· tn � anCI PO\verGREPРис.

1.2. Десятизначный телефонный номер,подсвеченный в окне веб-приложения RegexPalВо всех случаях, когда в книге говорится о цвете элемента рисунка или сним­ка экрана, например, о цвете, которым выделяется найденный текст в окнеRegexPal, вы должны понимать, что речь идет о цвете, отображаемом в окнеприложения или на экране электронной книги. На страницах печатного издания книги наш мир будет ограничен оттенками серого, за что я заранее прино­шу свои извинения.Глава 1.

Что такое регулярные выражения17В данном случае для поиска подстрок, соответствующих шаблону, мы использовалирегулярное выражение в виде строкового литерала. Строковый литерал - это букваль­ное представление строки.А теперь удалите номер в верхнем окне и введите вместо него одну только цифру 7.Заметили изменения? Подсвеченными оказались только цифры 7. Литеральному симво­лу (числу) 7 в регулярном выражении соответствует любое из четырех вхождений циф­ры 7 в целевом тексте.Задание соответствия цифрамс помощью симвопьных кпассовЧто если вы хотите найти в телефонном номере все цифры за один раз? Иными сло­вами, как задать соответствие каждой из цифр номера, не прибегая к последовательномуперебору конкретных значений?Вновь введите в верхнем поле следующую строку в том виде, как она приведена:[0-9]В результате все числа (точнее, цифры) в нижнем поле выделятся попеременно жел­тым и голубым цветом.

Выражение [ 0-9] означает для процессора регулярных выраже­ний следующее: "Найти совпадение с любой цифрой, принадлежащей к диапазону 0-9':Квадратные скобки не участвуют в сопоставлении литералов регулярного выраженияс целевыми строками, поскольку обрабатываются особым образом как метасимволы. Ме­тасимволы имеют специальный смысл в регулярных выражениях и представляют зарезер­вированные значения.

Последовательность символов, заключенная в квадратные скобки,называется символьным классом (или символьным набором). Символьному классу соответ­ствует любой одиночный символ из числа тех, которые заключены в квадратные скобки.Можно более точно ограничить набор допустимых цифр, указав их конкретный список:[012789]Введите это регулярное выражение в верхнем текстовом поле.

Ему будут соответство­вать не любые цифры, а только те, которые входят в список, т.е. О, 1, 2, 7, 8 и 9. И вновьв нижнем поле чередующимися цветами будут выделены все цифры номера.Для представления любого десятизначного телефонного номера, отдельные группыцифр которого разделены дефисами, можно было бы использовать следующее выражение:[0-9] [0-9] [0-9]-[0-9] [0-9] [0-9]-[0-9] [0-9] [0-9] [0-9]Это регулярное выражение вполне функционально, но чересчур громоздко.

Гораздоболее элегантное решение данной задачи обеспечивают символьные сокращения.Испопьзование симвопьных сокращенийЕще один способ представления произвольной одиночной цифры, с которым вы ужеуспели ознакомиться в начале главы, заключается в использовании метасимвола \d, ко­торому, как и регулярному выражению [ 0-9] , соответствует любая арабская цифра.

Ре­гулярные выражения подобного типа, обеспечивающие компактную форму записи целыхклассов символов, называют символьными сокращениями или просто сокращениями. (Дляних существует также другое название - символьные маски, но, поскольку последний18Гnава 1. Что такое регуnярные выражениятермин может вносить некоторую путаницу, я избегаю его использования. Более подроб­ные объяснения буд ут даны немного позже.)В качестве регулярного выражения, совпадающего с любым телефонным номером,представленным в описанном ранее формате, можно было бы использовать следующеевыражение:\d\d\d-\d\d\d-\d\d\d\dПовторение последовательности символов \d три или четыре раза подряд в точностисоответствует группам, состоящим из трех или четырех следующих подряд цифр.

Дефисиспользуется здесь как литеральный символ, участвующий в сопоставлении шаблонас целевым текстом.Включение дефисов в регулярное выражение - не единственный способ сопоставле­ния с дефисами в телефонном номере. Для этой цели можно также использовать экрани­рованный символ D в верхнем регистре (\D), которому соответствует любой символ, неявляющийся цифрой.Вот как можно использовать сокращение \D вместо литерального дефиса:\d\d\d\D\d\d\d\D\d\d\d\dМожете проверить, что и в этом случае в нижнем текстовом поле выделится весь те­лефонный номер, включая дефисы.Соответствие произвоnьному одиночному симвоnуДля представления дефисов в регулярном выражении можно было бы также исполь­зовать символ точки (.

):\d\d\d.\d\d\d.\d\d\d\dЗдесь точка, по существу, играет роль группового символа, совпадающего с любым оди­ночным символом (за исключением символа конца строки при определенных условиях).Этому регулярному выражению будут соответствовать телефонные номера, в которыхв качестве разделителя может использоваться не только дефис, но и символ процента(%):707%827%7019символ вертикальной черты ( 1 ):707182717019и вообще любой другой символ.'Как уже отмечалось, символ точки не всегда будет совпадать с символом новойстроки, таким, например, как символ перевода строки (U+OOOA). И все же су­...·:· ществуют способы добиться того, чтобы точке соответствовал также и символновой строки, о чем будет говориться далее.,'(.Захватывающие группы и обратные ссыпкиСейчас мы составим регулярное выражение, которое совпадает с начальной частьютелефонного номера из нашего примера, используя для этой цели захватьtвающую груп­пу, а затем сошлемся на содержимое этой группы с помощью обратной ссылки.

СоздадимГлава 1. Что такое регулярные выражения19захватывающую группу, заключив сокращение \d в круглые скобки, а для ссылки на со­держимое, захваченное этой группой, используем переменную \1:(\d)\d\lПеременная \1 ссылается на содержимое, захваченное (сохраненное) группой. Такимобразом, это регулярное выражение обеспечивает совпадение с префиксом 7 07 телефон­ного номера. Проанализируем отдельные составляющие этого выражения.• Группа ( \d) совпадает с первой цифрой номера (7) и запоминает ее.• Сокращение \d совпадает со следующей цифрой номера (О), но не запоминает ее,поскольку не заключено в скобки.• Переменная \1 ссылается на захваченную цифру (7).Данное выражение совпадает только с территориальным кодом.

Не огорчайтесь, есливам пока что не все до конца понятно. В этой книге вы еще не раз столкнетесь с приме­рами использования групп.Теперь мы можем записать регулярное выражение для сопоставления с полным те­лефонным номером, используя одну группу и несколько раз ссылаясь на ее содержимое:(\d)0\1\D\d\d\1\D\1\d\d\dИ все же это выражение еще не выглядит достаточно элегантным. Попытаемся улуч­шить его.Испопьзование квантификаторовНиже представлен еще один вариант регулярного выражения для сопоставления с те­лефонным номером, записанный с использованием другого синтаксиса:\d{ЗJ-?\d{ЗJ-?\d{4}Числа в фигурных скобках сообщают процессору регулярных выражений точное ко­личество вхождений цифр, которое требуется для совпадения. Фигурные скобки с заклю­ченными в них числами - это одна из разновидностей квантификаторов.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6375
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее