-
Светлин Наков, Символни низове (strings) – http://www.nakov.com/ dotnet/lectures/Lecture-8-Strings-v1.0.ppt
-
MSDN Library – http://msdn.microsoft.com
-
Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press, 2002, ISBN 0735614229
-
Charles Petzold, Programming Windows with C#, Microsoft Press, 2003, ISBN 954-685-239-2
-
Tom Archer and Andrew Whitechapel, Inside C#, Microsoft Press; 2nd edition 2002, ISBN 0735616485
-
MSDN Training, Programming with the Microsoft®. NET Framework (MOC 2349B), Module 7: Strings, Arrays, and Collections
-
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 синтаксис на регулярните изрази, като класовете, предоставяни от библиотеката, предоставят всичко необходимо за ефективна работа с тях.
Сподели с приятели: |