slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Тема8 Алгоритми обробки текстових даних на основі регулярних виразів PowerPoint Presentation
Download Presentation
Тема8 Алгоритми обробки текстових даних на основі регулярних виразів

Loading in 2 Seconds...

play fullscreen
1 / 20

Тема8 Алгоритми обробки текстових даних на основі регулярних виразів - PowerPoint PPT Presentation


  • 238 Views
  • Uploaded on

Тема8 Алгоритми обробки текстових даних на основі регулярних виразів. Перелік питань. Перелік питань: Введення до теорії кінцевих автоматів. Графічне представлення кінцевих автоматів. Використання кінцевого автомату: синтаксичний аналіз.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Тема8 Алгоритми обробки текстових даних на основі регулярних виразів' - bao


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Тема8 Алгоритми обробки текстових даних на основі регулярних виразів

slide2
Перелік питань

Перелік питань:

  • Введення до теорії кінцевих автоматів.
  • Графічне представлення кінцевих автоматів.
  • Використання кінцевого автомату: синтаксичний аналіз.
  • Реалізація синтаксичного аналізу файлу з розділяючими комами.
  • Детерміновані та недетерміновані кінцеві автомати.
  • Регулярні виразиі події.
  • Використання регулярних виразів.
slide3
1. Введення до теорії кінцевих автоматів

Кінцевий автомат – математична абстракція, яка дозволяє описувати шляхи зміни стану об’єкту в залежності від його поточного стану та вхідних даних, за умови, що кількість станів є кінцевою.

Приклад задання кінцевого автомату:

M = (Q, Σ, δ, q0, F), де

  • Q – кінцева множина станів автомату;
  • q0- початковий стан автомату;
  • F – множина заключних чи допускаючих станів, таких, що F входить в Q;
  • Σ – допустимий вхідний алфавіт (кінцева множина допустимих символів), із якого формуються рядки, що зчитуються автоматом;
  • δ – функція переходів автомату: δ:Q × Σ P (Q)
slide4
2. Графічне представлення кінцевих автоматів

Графічно автомат представляється за допомогою графа. Вузли графа представляють стани автомата.

Допускаючий стан (другий) помічений подвійною межею кола. Стрілки (ребра графа) зображають таблицю правил переходу. Стрілка, для якої не задано стан, звідки вона спрямована, відображає початковий стан.

slide5
3. Використання кінцевого автомату: синтаксичний аналіз.

Приклад кінцевого автомату для синтаксичного аналізу адреси електронної пошти

slide6
Реалізація кінцевого автомату, який перевіряє адресу
slide9
4. Реалізація синтаксичного аналізу файлу з розділяючими комами

Задача синтаксичного аналізу файлу з деякими розділяючими знаками, наприклад, комами – типова задача, яка для свого вирішення вимагає використання кінцевих автоматів.

Допустимо, ми маємо файл, рядки якого наведені у наступному вигляді:

26091234, 20896789,,4300, “За консультативні послуги”

Наведений рядок містить п’ять полів:

26091234

20896789

<Без значення>

4300

За консультативні послуги

slide10
Графічне зображення кінцевого автомату для синтаксичного аналізу файлу з розділяючими комами
slide11
5. Детерміновані та недетерміновані кінцеві автомати

Детермінований кінцевий автомат аналогічно ДМТ може безальтернативно переходити з одного стану лише у один наступний стан.

В той час, недетерміновайни кінцевий автомат, як і НМТ може переходити у декілька станів, створюючи стільки копій автомату, до скількох додаткових станів необхідно перейти.

Приклад недетермінованого кінцевого автомату:

slide12
6. Регулярні виразиі події

Регулярним виразом в алфавіті Σ називається вираз, побудований із літер алфавіту Σ та із символів операцій диз'юнкції, добутку і ітерації з використанням відповідним чином круглих дужок.

Будь який регулярний вираз R визначає деяку подію S (тобто S відбувається в результаті виконання всіх операцій, які входять у вираз R). Події, які визначаються в такий спосіб, називаються регулярними подіями над алфавітом X. Іншими словами, регулярною подією називається подія, отримана за допомогою застосування скінченої кількості елементарних операцій диз'юнкції, добутку і ітерації. В кінцевих автоматах описуються тільки регулярні події.

При вивченні теорією автоматів різноманітних питань, пов'язаних з поняттям події, як правило припускається наявність деяких засобів для описання (визначення) подій. Таким конструктивним засобом може бути формальна мова, вирази якою задають події над деяким алфавітом (тобто, формальна мова інтерпретується в множину подій).

Вперше таку мову для подій, що визначаються в кінцевих автоматах – мову регулярних виразів застосував американський математик Кліні С. К. Ця мова стала однією із основних мов для визначення умов функціонування автомату, особливо після його вдосконалення в працях радянського математика Глушкова В. М., та американського математика Мак-Нотона Р. Ф. та інших дослідників.

slide13
Побудова алгебраїчної мови регулярних виразів

Алгебраїчна мова регулярних виразів будується як мова виразів деякої алгебри. В цьому випадку розглядається мова для описання подій, тому множина всіх подій представляє собою деяку універсальну алгебру. Тобто, над подіями мови регулярних виразів визначаються три алгебраїчні операції – дві бінарні і одна унарна:

  • AU B — диз'юнкція або об'єднання (позначається також AU B) — теоретико множинна операція: подія AU B представляє собою звичайне об'єднання множин A та B;
  • AB — добуток (конкатенація), визначається через добуток слів. Добутком слів p та q називають слово pq, утворене в результаті дописування слова q справа до слова p. Подія AB складається із тих і тільки тих слів, які мають вигляд pq, де p належить A, а q належить B;
  • {A} — ітерація (позначається також A*).

Ітерація визначається трохи складніше. Введемо позначення An для добутку . Тоді ітерацію можна висловити через попередні дві операції так:

{A} = AU AAU AU A3 U … U An U …

Таким чином, слово q тоді і тільки тоді належить {A}, коли q має вигляд pn, де p — належить A.

slide16
8. Використання регулярних виразів

Використання регулярних виразів здійснюється у три етапи: синтаксичний аналіз; компіляція; перевірка їхньої відповідності рядкам вхідних даних.

Синтаксичний аналіз – процес перевірки відповідності наведеного синтаксису граматичним правилам.

Процес синтаксичного аналізу також має назву “парсинг” (parsing). Для синтаксичного аналізу регулярних виразів, як правило, будується нисхідний синтаксичний аналізатор (top down parser).

slide17
Компіляція регулярних виразів

Компіляція регулярного виразу – перетворення його на недетермінований кінцевий автомат.

Приклад компіляці для виразу “(a|b)*bc” (повторення нуль чи більше раз символу а чи b, за якими йдуть символи b та c).

slide18
Зіставлення рядків з регулярними виразами.

В процесі зіставлення рядку з регулярним виразом відбувається виконання скомпільованого кінцевого автомату над вхідним рядком.

Приклад реалізації регулярного виразу в C# (пошук у файлі коректних адрес електронної пошти).

slide19
Використання регулярних виразів для автоматизації типових задач.

using System;

using System.Globalization;

using System.Text.RegularExpressions;

publicclass Class1

{

publicstaticvoid Main()

{

string dateString = DateTime.Today.ToString("d",

DateTimeFormatInfo.InvariantInfo);

string resultString = MDYToDMY(dateString);

Console.WriteLine("Converted {0} to {1}.", dateString, resultString);

}

staticstring MDYToDMY(string input)

{

return Regex.Replace(input,

"\\b(?<month>\\d{1,2})/(?<day>\\d{1,2})/(?<year>\\d{2,4})\\b",

"${day}-${month}-${year}");

}

}

Приклад регулярного виразу для заміни дати формату мм/дд/рр на формат дд/мм/рр

slide20

using System;

using System.Text.RegularExpressions; 

publicclass Example{

staticstring CleanInput(string strIn)

{

// Replace invalid characters with empty strings.

return Regex.Replace(strIn, @"[^\w\.@-]", "");

}

}

Приклад видалення всіх символів із рядку, що не є буквенно-цифровими за винятком символів "@", "-" та ".“