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

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

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

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

В последнем случае дополнительный знак процента требуется также при ис­пользовании кодировки Uпicode 1 •Например, выражение\351или\%0351приводит к тому же результату, что и выражение\u00e9или\%u00e9Проведите эксперимент с текстом Вольтера в приложении RegexPal. Вы обнаружите,что коду \351 также соответствует буква е, но при этом он короче своего шестнадцате­ричного аналога.Поиск соответствий свойствам симвоnов UnicodeВ некоторых реализациях регулярных выражений, например в Perl, при сопоставле­нии текста с шаблоном допускается использовать свойства символов Unicode.

К числутаких свойств относится, например, принадлежность символа к буквам, цифрам или зна­кам пунктуации.Сейчас я познакомлю вас с ack - инструментом командной строки, написаннымдля Perl, который во многом напоминает grep (http://betterthangrep.com). Мало­вероятно, что он установлен в вашей системе, поэтому вы должны загрузить и устано­вить его самостоятельно (см. раздел "На заметку").Для работы с этим инструментом я выбрал в качестве примера отрывок из оды "К ра­дости" (''An die Freude"), написанной (разумеется, на немецком языке) Фридрихом Шил­лером в 1785 году.IСм. также обсуждение по адресу http: //www.

ore1lly. com/ са talog /errata. csp? 1sbn=97814 4 939268 О. - Примеч. ред.Глава 6. Сопоставление с символами Unicode и другими символами79An die Freude.Freude, schoner Gotterfunken,Tochter aus Elisium,Wir betreten feuertrunkenHimmlische, dein Heiligthum.Deine Zauber blnden wieder,was der Mode Schwerd getheilt;Bettler werden Fйrstenbriider,wo dein sanfter Fliigel weilt.Seid umschlungen, Millionen!Diesen KuB der ganzen Welt!Brйder, йberm SternenzeltmuB ein Iieber Vater wohnen.В этом отрывке есть несколько интересных символов, выходящих за пределы обла­сти кодов ASCII. Для выполнения операций поиска в этом тексте мы будем использоватьсвойства.

(Если вас интересует перевод данного фрагмента, можете найти его в Bикипe­дии: https: / /ru. wikipedia. org /w i ki /Oдa_ к_paдocти)Используя ack в командной строке, вы, в частности, сможете задать поиск символов,обладающих тем свойством (property), что они являются буквами (Letter):ack '\pL' schiller.txtЭта команда выделит в тексте все буквы. Если вас интересуют буквы нижнего (lower)регистра, воспользуйтесь следующей командой:ack '\p{Ll}' schiller.txtФигурные скобки обязательны.

В случае букв верхнего (upper) регистра команда бу­дет выглядеть так:ack '\p{Lu}' schiller.txtДля указания символов, не обладающих заданным свойством, используется буква Рверхнего регистра:ack '\PL' schiller.txtЭта команда выделит в тексте все символы, не являющиеся буквами.Следующая команда выделит все символы, не являющиеся буквами нижнего регистра:ack '\P{Ll}' schiller.txtА эта команда выделит все символы, не являющиеся буквами верхнего регистра:ack '\P{Lu}' schiller.txtМожете повторить эти операции в друтом онлайновом тестере, перейдя в браузерепо адресу http: / /regex.

larsolavtorvik. сот. На рис. 6.4 показан шиллеровскийтекст, в котором аналогичным образом были выделены все букв ы нижнего регистра.80Глава 6. Сопоставление с символами Unicode и другими символами'�' -1' ,,'\'''\, ''.• • '• ••�,�,�regex.larsolavtorvik.coniregexO 96�ttern 1s1art and end slashes Vrlll Ье ad(Sed \\hen neede(S)lp{U}Replacemt>ntSubjectAn die fl"eude:Freude, :.c"ioner G6tterft.1nken,Tochte,.

•us t=Hsiu,.,..!ir betreten feuertrunkenHil\lМHIChe, de:in Heiligthun.Deine Zauber Ьinden wiedн,,,as de" l\ode Schwerd ge he:ilt;Bettler ,,erd@n FUrste:nbrUder,w0 dein :.1nfter Flu1el мeilt.Se:1d u.ischlunsen, '\ill!.onenlOie:.en uB der 1•n:.en lleltБrUd!!r, uber• Sternen:!!lt�а ein l.1eber Vater wohnen,MatchesAi Шt:- Ff-="uoe F1eu е s 11 юt:"r Gotter'un•ёn То ltlc>f ,11.,5, El1�1uГ"' Wlr Ьf>ffE'kf'•.-t.:t-r1rtJrki:-n Hirт11rJis1·he dein Hei1iglhu1" Detne Zaut>c, binC!en ;,ieder \11а.5 .. �, 1 tooes, hлr!IO ai:-11 e11t 6t"t:Jer c1aen Furstent>rltaer �·,о ckJn 5,anne1 Flugel • ell! sг1�1.;r.-sc N1Jo�en 1.11111ontnl 011:'5.i:-r l(ul1 <fer 2arzen \\'en1 Вн.1аеr libPI 1Т' St�rnenze-11 п ur..-e1n !le-ber V.atN otюenCodepreg_match_alt('t p{L�-r 'Ал die Freude Freude schoner Gotterfunken Tochter ausEl1s1um Wlr betreten •euenrunkt>n H1mmrlsc1,e dein He!llgthum Delne Zauber tllnden\'Jteder \vas der Mode Sch\'1erd getheitt 8ettler •:,erden Furstenbruder но dею sa11nerFlugel Ytellt Seld umschlungen Mll!lone:n1 Olesen Kul1 dег ganzen \'Veltl вгur:�ег t1ЬermSternenze111nuB eln lleber Vater �.,.ohnen• preg_match_a11preg_matchpreg_replac еpreg_sp1n., caseless (1)мu11:1llne mode (m)Dot all 1s1Extended (Х)Anchored !А)Dollar ena only (D)Extra ana�sls 01 pattern rS>Pattem ls ungreea; (U)Extra (Х)Pattern ts treated as UTF·8 (о)Pattern orderserorcierO"fse-t taptureSpl,t no emptySplrt delim с aptureSpl1t o�et capture-L!MltHelp РНР PCREРис.

6.4. Выделение букв нижнего регистра с помощью свойстваВ табл. 6.2 приведен список свойств, используемых в соответствии с синтакси­сом \р {свойство) или Р {свойство) (см. описание синтаксиса рсrе(З) на сайтеhttp://www. pcre. org/pcre. txt). Кроме того, свойства позволяют учитывать присопоставлении особенности используемого языка оригинала (см. табл. А.8).Таблица 6.2. Свойства символовСвойствоОписаниесДругоеСеУправляющий символCfФорматСпНе присвоеноСоЧастное использованиеCsСуррогатLБукваLIБуква нижнего регистраГnава 6. Соnоставnение с симвоnами Unicode и другими симвоnами81Окончание табл. 6.2СвойствоОписаниеLmБуква-модификаторLoДругая букваLtПрописная букваLuБуква верхнего регистраL&LI, Lu или LtмЗнакМсВнутристрочный знакМеЗаключающий знакМпВнестрочный знакNЦифраNdДесятичное числоNIБуквенная цифраNoДругая цифрарЗнак препинанияРеСоединительный знак препинанияPdТиреРеЗакрывающий знак препинанияPfЗавершающий знак препинанияPiНачальный знак препинанияРоДругой знак препинанияPsОткрывающий знак препинанияsСимволScСимвол валютыSkСимвол-модификаторSmМатематический символSoДругой символzРазделительZIРазделитель строкZpРазделитель абзацевZsРазделительный пробел82Глава 6.

Сопоставление с символами Unicode и другими символамиПоиск соответствий управnяющим симвоnамКакие выражения следует использовать для сопоставления с управляющими симво­лами? Необходимость в поиске управляющих символов возникает не так уж часто, нознание того, как это делается, вам не помешает. В архиве примеров находится файл ascii.txt, состоящий из 128 строк, которые содержат все АSСП-символы, по одному в каждойстроке (отсюда и 128 строк). Поэтому в случае успешного поиска вы обычно будете полу­чать одну строку.

Этот файл отлично подходит для целей тестирования.При поиске строк или управляющих символов в файле ascii.txt с помощью ути­литы grep или ack обе они могут интерпретировать этот файл как двоичный.В таком случае при обнаружении совпадения каждая из них может всего лишьвывести сообщение "Biпary file ascii.txt matches" ("Обнаружено совпадениев двоичном файле ascii.txt"), и на этом все закончится.В регулярных выражениях управляющие символы можно указывать в следующемвиде:\схгде х - интересующий вас управляющий символ.Предположим, вы хотите найти в файле пустой символ (NULL).

В Perl это можно сде­лать с помощью следующей команды:perl -n -е 'print if /\с@/' ascii.txtРезультат должен быть таким:о. NullПоскольку пустой символ - непечатный, вы не сможете увидеть его, но он естьв файле.Если вы откроете файл ascii.txt не в vim, а в каком-то другом редакторе, то он,вероятно, удалит управляющие символы из файла, поэтому я не рекомендуювам этого делать.Для поиска пустого символа можно также использовать еsсаре-последовательность \ О.Проверьте это, выполнив следующую команду:perl -n -е 'print if /\0/' ascii.txtПродолжая в том же духе, найдите символ BEL (звуковой сигнал) с помощью такойкоманды:perl -n -е 'print if /\cG/' ascii.txtЭта команда вернет следующую строку:7.

BellЭтот же результат можно получить, используя аббревиатуру \а:perl -n -е 'print if /\а/' ascii.txtГлава 6. Сопоставление с символами Unicode и другими символами83Для поиска символа ESCAPE (альтернативный регистр №2, АР2) используйте такуюкоманду:perl -n -е 'print if /\с[/' ascii.txtприводящую к следующему результату:27. Escapeили эквивалентную команду, в которой используется аббревиатура \е:perl -n -е 'print if /\е/' ascii.txtА как насчет символа BACKSPACE (возврат на шаг)� Проверьте:perl -n -е 'print if /\сН/' ascii.txtЭта команда выдаст следующий результат:8. BackspaceТо же самое можно получить, используя скобочное выражение:perl -n -е 'print if /[\Ь]/' ascii.txtА как интерпретировалась бы последовательность символов \Ь, не используй мы ско­бок? Совершенно верно: как граница слова (см.

главу 2).Скобки изменяют способ обработки последовательности процессором. В данном слу­чае благодаря им Perl воспринимает эту последовательность как символ BACKSPACE.В табл. 6.3 сведены все коды, которые мы использовали в этой главе для сопоставле­ния с различными символами.Таблица 6.3. Коды для сопоставления с символами Unicode и другими символамиКодОписание\иххххUnicode (4 позиции)\хххUnicode (2 позиции)\UxxxxxxxxUnicode (8 позиций)\хххВосьмеричный код\схУправляющий символ\0Пустой символ\аЗвуковой сигнал\еEscape[\Ь\]Возврат на шаг (BACKSPACE)На этом данная глава завершается. В следующей главе вы поближе познакомитесьс квантификаторами.84Гnава 6. Сопоставnение с симвоnами Unicode и другими симвоnамиО чем вы узнаnи в rnaвe 6• Как выполнить сопоставление с любым символом Unicode, используя выражения\uxxxx и \ххх.• Как выполнить сопоставление с любым символом Unicode в редакторе vim, ис­пользуя выражения \ %ххх, \%Ххх, \%uxxxx и \%Uxxxx.• Как выполнить сопоставление с символами, коды которых находятся в пределахдиапазона 0-255, используя восьмеричный формат \000.• Как использовать свойства символов Unicode с помощью последовательности\о{х}.• Как выполнить сопоставление с управляющими символами, используя последова­тельности \е и \сН.• Дополнительные сведения об использовании Perl в командной строке (дополни­тельные однострочные команды Perl).На заметку• Для ввода управляющих символов в файл ascii.txt я использовал редактор vim(http://www.vim.org).

В vim для этого надо сначала нажать комбинациюклавиш <Ctrl+V>, а затем комбинацию, соответствующую управляющей после­довательности для данного символа, например <Ctrl+C> для символа конца тек­ста (END OF ТЕХТ). Для ввода двухзначных шестнадцатеричных кодов симво­лов я также использовал комбинацию клавиш <Ctrl+V> с последующим вводомх и кода символа. Для ввода управляющих символов можно также использоватьдиrрафы - пары букв, которые воспринимаются системами текстового поиска некак пара отдельных символов, а как единое целое. Чтобы увидеть список возмож­ных кодов, введите в vim команду : digraph. Чтобы ввести диграф, необходимонажать комбинацию клавиш <Ctrl+K> в режиме Insert (Вставка), а затем ввестидвухбуквенное обозначение диграфа (например, NU для ввода пустого символа).• Regex Него (http://regexhero.net/tester) - реализация регулярных вы­ражений в браузере для платформы .NET, написанная Стивом Уортамом.

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

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

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