1 / 20

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

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

bao
Télécharger la présentation

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

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 1. Введення до теорії кінцевих автоматів Кінцевий автомат – математична абстракція, яка дозволяє описувати шляхи зміни стану об’єкту в залежності від його поточного стану та вхідних даних, за умови, що кількість станів є кінцевою. Приклад задання кінцевого автомату: M = (Q, Σ, δ, q0, F), де • Q – кінцева множина станів автомату; • q0- початковий стан автомату; • F – множина заключних чи допускаючих станів, таких, що F входить в Q; • Σ – допустимий вхідний алфавіт (кінцева множина допустимих символів), із якого формуються рядки, що зчитуються автоматом; • δ – функція переходів автомату: δ:Q × Σ P (Q)

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

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

  6. Реалізація кінцевого автомату, який перевіряє адресу

  7. 4. Реалізація синтаксичного аналізу файлу з розділяючими комами Задача синтаксичного аналізу файлу з деякими розділяючими знаками, наприклад, комами – типова задача, яка для свого вирішення вимагає використання кінцевих автоматів. Допустимо, ми маємо файл, рядки якого наведені у наступному вигляді: 26091234, 20896789,,4300, “За консультативні послуги” Наведений рядок містить п’ять полів: 26091234 20896789 <Без значення> 4300 За консультативні послуги

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

  9. 5. Детерміновані та недетерміновані кінцеві автомати Детермінований кінцевий автомат аналогічно ДМТ може безальтернативно переходити з одного стану лише у один наступний стан. В той час, недетерміновайни кінцевий автомат, як і НМТ може переходити у декілька станів, створюючи стільки копій автомату, до скількох додаткових станів необхідно перейти. Приклад недетермінованого кінцевого автомату:

  10. 6. Регулярні виразиі події Регулярним виразом в алфавіті Σ називається вираз, побудований із літер алфавіту Σ та із символів операцій диз'юнкції, добутку і ітерації з використанням відповідним чином круглих дужок. Будь який регулярний вираз R визначає деяку подію S (тобто S відбувається в результаті виконання всіх операцій, які входять у вираз R). Події, які визначаються в такий спосіб, називаються регулярними подіями над алфавітом X. Іншими словами, регулярною подією називається подія, отримана за допомогою застосування скінченої кількості елементарних операцій диз'юнкції, добутку і ітерації. В кінцевих автоматах описуються тільки регулярні події. При вивченні теорією автоматів різноманітних питань, пов'язаних з поняттям події, як правило припускається наявність деяких засобів для описання (визначення) подій. Таким конструктивним засобом може бути формальна мова, вирази якою задають події над деяким алфавітом (тобто, формальна мова інтерпретується в множину подій). Вперше таку мову для подій, що визначаються в кінцевих автоматах – мову регулярних виразів застосував американський математик Кліні С. К. Ця мова стала однією із основних мов для визначення умов функціонування автомату, особливо після його вдосконалення в працях радянського математика Глушкова В. М., та американського математика Мак-Нотона Р. Ф. та інших дослідників.

  11. Побудова алгебраїчної мови регулярних виразів Алгебраїчна мова регулярних виразів будується як мова виразів деякої алгебри. В цьому випадку розглядається мова для описання подій, тому множина всіх подій представляє собою деяку універсальну алгебру. Тобто, над подіями мови регулярних виразів визначаються три алгебраїчні операції – дві бінарні і одна унарна: • 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.

  12. Елементи регулярних виразів в .NET Framework

  13. Елементи регулярних виразів в .NET Framework (продовж.)

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

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

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

  17. Використання регулярних виразів для автоматизації типових задач. 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}"); } } Приклад регулярного виразу для заміни дати формату мм/дд/рр на формат дд/мм/рр

  18. using System; using System.Text.RegularExpressions;  publicclass Example{ staticstring CleanInput(string strIn) { // Replace invalid characters with empty strings. return Regex.Replace(strIn, @"[^\w\.@-]", ""); } } Приклад видалення всіх символів із рядку, що не є буквенно-цифровими за винятком символів "@", "-" та ".“

More Related