#6
Виконанні цієї лабораторної роботи необхідно розпочати з:
|
>>> from __future__ import division >>> import nltk, re, pprint |
|
||
|
||
|
Вираз «^e-?mail$» відповідає двом стрічкам email та e-mail. Можна знайти загальну кількість таких стрічок (врахувавши різні способи їх запису) у будь-якому тексті скориставшись sum(1 for w in text if re.search('^e-?mail$', w)).
|
||
|
Символ + означає одне або більше повторення
символh * , який означає нуль або більше повторень
Оператор ^ виконує іншу функцію, якщо його записати першим символом в квадратних дужках. Наприклад вираз «[^aeiouAEIOU]» встановлює відповідність до будь-яких символів крім голосних. В корпусі NPS Chat Corpus можна знайти , за допомогою виразу «^[^aeiouAEIOU]+$» всі слова в яких повністю відсутні голосні : :):):), grrr, cyb3r , zzzzzzzz. Також сюди увійшли слова які містять інші символи крім букв.
В наступних прикладах показані інші регулярні вирази для пошуку слів, які відповідають заданим шаблонам та показано використання символів: \, {}, (), та |:
|
Основні метасимволи регулярних виразів Таблиця 1.
Оператор |
Дія |
. |
Відповідність до будь-якого символу |
^abc |
Відповідність до шаблону abc на початку стрічки |
abc$ |
Відповідність до шаблону abc в кінці стрічки |
[abc] |
Відповідність до одного символу з набора |
[A-Z0-9] |
Відповідність до одного символу з проміжку |
ed|ing|s |
Відповідність до одної з визначених стрічок (диз’юнкція) |
* |
Нуль або більше повторів |
+ |
Один або більше повторів |
? |
Нуль або один,наприклад. a?, [a-z]?- вказує на опціональність |
{n} |
Точно n повторів, де n не відємне ціле значенняr |
{n,} |
Мінімум n повторів |
{,n} |
Не більше ніж n повторів (максимум) |
{m,n} |
Мінімум m та максимум n повторів |
a(b|c)+ |
Круглі дужки вказують на облась дії оператора |
Вираз re.search(regexp, w) дозволяє знаходити слова w , які відповідають регулярному виразу regexp . Регулярні вирази також можна використовувати для виявлення фрагментів слів, або для модифікації слів різними способами.
Метод re.findall() ("знайти всеl") дозволяє знайти всі відповідності даному регулярному виразу. В наступному прикладі показано знаходження та підрахунок всіх голосних:
|
||
|
Метод re.findall() використовується для виявлення фрагментів слів а метод ''.join() для їх поєднання.
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
||||
|
|
|||
|
|
|||
|
|
|||
|
|
Частина виразу «[-.(]+» дозволяє виявити подвійний дефіс, еліпсис а також відкриту дужку.