Кратко съдържание



страница69/73
Дата21.07.2018
Размер8.57 Mb.
1   ...   65   66   67   68   69   70   71   72   73

Използвана литература


  1. Светлин Наков, Символни низове (strings) – http://www.nakov.com/ dotnet/lectures/Lecture-8-Strings-v1.0.ppt

  2. MSDN Library – http://msdn.microsoft.com

  3. Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press, 2002, ISBN 0735614229

  4. Charles Petzold, Programming Windows with C#, Microsoft Press, 2003, ISBN 954-685-239-2

  5. Tom Archer and Andrew Whitechapel, Inside C#, Microsoft Press; 2nd edition 2002, ISBN 0735616485

  6. MSDN Training, Programming with the Microsoft®. NET Framework (MOC 2349B), Module 7: Strings, Arrays, and Collections

  7. Stephen Gilbert, Computer Science 140, C# Programming, Strings and Exceptions – http://csjava.occ.cccd.edu/~gilberts/CS140S03/slides/ 140S0309.ppt



Национална академия по разработка на софтуер

Лекторите

» Светлин Наков е автор на десетки технически публи­ка­ции и ня­колко книги, свър­­зани с раз­работката на соф­ту­ер, заради което е тър­сен лектор и кон­султант.

Той е разработчик с дъл­гого­дишен опит, работил по раз­нообразни проекти, реали­зи­рани с раз­лични техноло­гии (.NET, Java, Oracle, PKI и др.) и преподавател по съвре­мен­ни софтуерни технологии в СУ "Св. Климент Охридски".

През 2004 г. е носител на награ­дата "Джон Атанасов" на прези­дента на България Ге­орги Пър­ва­нов.

Светлин Наков ръководи обу­чението по Java технологии в Академията.


» Мартин Кулов е софтуерен инженер и консул­тант с дългогодишен опит в изграждането на решения с платформите на Microsoft.

Мартин е опитен инструктор и сертифициран от Майкрософт разработчик по програмите MCSD, MCSD.NET, MCPD и MVP и меж­дународен лектор в световна­та организа­ция на .NET потре­бителски­те групи INETA.

Мартин Кулов ръководи обу­чението по .NET технологии в Академията.


Академията

» Национална академия по раз­ра­ботка на софтуер (НАРС) е център за професионално обу­чение на соф­ту­ерни специалисти.


» НАРС провежда БЕЗПЛАТНО кур­сове по разработка на софтуер и съв­ременни софтуерни тех­нологии в Со­фия и други градове.
» Предлагани специалности:

  • Въведение в програмирането (с езиците C# и Java)

  • Core .NET Developer

  • Core Java Developer

» Качествено обу­чение с много практически про­екти и индивиду­ално внимание за всеки.


» Гарантирана работа! Трудов до­говор при постъпване в Академията.
» БЕЗПЛАТНО!

Учите безплатно във въведителните курсове и по стипендии от работода­телите в следващите нива.



http://academy.devbg.org

Глава 10. Регулярни изрази

Необходими знания


  • Базови познания за общата система от типове в .NET

  • Базови познания за езика C#

  • Познания на средствата за работа със символни низове в .NET Framework

Съдържание


  • Регулярни изрази – същност, произход и основни приложения

  • Прости примери за регулярни изрази

  • Езикът на регулярните изрази. Основни елементи на синтаксиса

  • Регулярните изрази в .NET платформата. Пространството System. Text.RegularExpressions.

  • Търсене с регулярни изрази

  • Работа с групи

  • Валидация с регулярни изрази

  • Заместване и разделяне по регулярен израз

  • Настройки и опции

  • Предварително компилиране на регулярни изрази

  • Ефективност на регулярните изрази

  • Полезни готови регулярни изрази

  • Интернет ресурси. Инструментът The Regulator

В тази тема ...


В настоящата тема ще разгледаме регулярните изрази, набиращи все по-голяма популярност сред разработчиците на софтуер при решаването на проблеми, свързани с обработката на текст. Ще се спрем на произхода и същността на регулярните изрази и ще се запознаем със синтаксиса и основните правила при конструирането им. Темата предлага кратко пред­ставяне на основните дейности, при които е подходящо използването на регулярни изрази, и дава конкретни насоки как можем да правим това със средствата на .NET Framework. Ще разгледаме инструментариума, който библиотеката с класове предоставя за работа с регулярни изрази, и ще опишем най-важните методи, съпроводени с достатъчно примери.

Регулярни изрази


Регулярните изрази представляват много мощен апарат за обработка на символни низове. Множество често срещани в практиката задачи, могат да бъдат решени изключително просто и елегантно с тяхна помощ. В .NET платформата регулярните изрази са широко функционални и същевре­менно лесни за използване. Ето защо доброто познаване на средствата за работа с тях може да спести много главоболия и трудности, познати на всеки, който се занимава с обработка на символни низове.

Какво е регулярен израз?


Регулярният израз е символен низ, конструиран по специални синтактич­ни правила. Той описва един език от думи – символни низове. За всяка дума е дефинирано еднозначно дали принадлежи на описвания език, или не. На регулярния израз може да се гледа като на шаблон – той търси съвпадения с всички думи, които отговарят на този шаблон. Един от най-често използваните регулярни изрази, например, е изразът:

(.+)@(.+)\.(.+)

Макар да изглежда странно на пръв поглед, това не е нищо друго освен един опростен шаблон за формата на стандартните e-mail адреси, с които всеки е запознат – поредица от символи, следвана от символа @ и после име на домейн. Как точно регулярният израз представя този шаблон, ще разберем в настоящата тема.

За какво се използват регулярните изрази?


Регулярните изрази могат да се използват за най-разнообразни задачи при текстообработката. В практиката те най-често са полезни при три типа задачи – търсене, валидация и заместване.

Търсене и извличане на информация


Търсенето на даден низ в текст е полезно при редица проблеми от практиката. Принципно то може да се реализира и без помощта на регуля­рни изрази, но те значително го улесняват и позволяват паралел­ното извличане на различна информация от текста – поднизове, които носят определен смисъл за нас. Класическите методи за обхождане и парсване на текста обикновено изискват значително повече време и количество код в сравнение с решенията, използващи регулярни изрази.

Валидация на входни данни


Валидацията на входни данни е задължителна във всеки съвременен софтуер, който претендира да спазва елементарните изисквания за сигурност. С помощта на регулярни изрази тя се реализира изключително лесно – възможни са най-различни видове валидация на символните данни, в зависимост от нуждите на програмиста.

Заместване


Заместването на един низ с друг в текст е една от най-често срещаните практически задачи при текстообработката, а същевременно и доста бавна и трудна за реализация. С помощта на регулярните изрази подобен проблем се разрешава само с няколко реда код. При това имаме възмож­ност да заместваме по шаблон, а не само с фиксиран текст, като в шабло­на можем да използваме и елементи от търсения низ.

Например можем да намерим всички срещания на конструкции от типа "(a+b)*c" и да ги заместим с еквивалентните им "a*c+b*c" – нещо, което е доста трудно за постигане с традиционните средства за синтактичен анализ и текстообра­ботка.


Регулярни изрази и крайни автомати


Регулярните изрази са разработени първоначално като математическа теория. Те са свързани с разпознаването и обработката на т.нар. фор­мални езици – клон от дискретната математиката, свързан със строги син­тактични дефиниции на абстрактни обобщения на реалните човешки езици. Теорията на формалните езици днес намира широко приложение в различни области от математиката, лингвистиката и компютърните науки, например в изкуствения интелект, търсенето в Интернет, предпазването от спам и др.

Какво са крайни автомати?


Един регулярен израз описва един регулярен (автоматен) език. В теорията това са езиците с най-строги граматични правила, които могат да се обработват от машини. На всеки регулярен език отговаря едно­значно т. нар. краен автомат – абстрактна математическа машина, която лесно се реализира програмно и представлява набор от състояния и правила за преход между тях. Проверката дали един текст представлява дума от регулярния език, описван от даден регулярен израз, практически се свежда до реализи­рането на съответния краен автомат.

Понеже работата на крайните автомати е бърза, регулярните изрази са доста ефективен метод за обработка на текст. За пълната им функцио­налност, реализирана в съвременните програмни езици, обаче, се налага известно разширение на крайните автомати, което намалява ефектив­ността, макар да повишава значително възможностите на обработката. На това ще се спрем по-късно.


История на регулярните изрази


Както вече споменахме, регулярните изрази първоначално са възникнали като математически апарат за описание на регулярните езици в изчисли­телната теория и теорията на формалните езици. С навлизането на ком­пютрите в употреба при научните изследвания, регулярните изрази и крайните автомати се имплементират в програмните среди и операци­онните системи, главно с цел обработка на текст. С течение на времето възможностите на регулярните изрази в езиците за програмиране се разширяват значително, до степен, в която те реално вече не представят само ограничените регулярни езици, а и по-широки категории формални езици.

Регулярните изрази в езиците за програмиране


Регулярните изрази са въведени най-напред в Unix и различните програми и команди за Unix, например ed, grep, awk, lex, Emacs и др. По-късно е разработена библиотека за C, наречена "regex", която обаче е сравни­телно сложна и неудобна за употреба. Истинският бум на този апарат се дължи на езика Perl, който вгражда в самия си синтаксис много удобни средства за работа с регулярни изрази и улеснява значително задачите за текстообработка, на които вече се спряхме. Впоследствие Филип Хейзъл разработва "pcre", което наподобява по функционалност възможностите, разработени в Perl, и се използва в по-новите езици Python и PHP, а библиотека за регулярни изрази е реализирана и в Java.

В .NET платформата с много малки разлики се използват принципите, въведени от най-разпространения Perl синтаксис на регулярните изрази, като класовете, предоставяни от библиотеката, предоставят всичко необ­хо­димо за ефективна работа с тях.


1   ...   65   66   67   68   69   70   71   72   73


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница