Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab_3

.docx
Скачиваний:
15
Добавлен:
13.03.2015
Размер:
16.59 Кб
Скачать

Лабораторная работа №3 – Строки и регулярные выражения.

Цель работы: Ознакомление с синтаксисом регулярных выражений .NET и их использование для преобразования текста.

Методические пояснения и рекомендации к выполнению лабораторной работы.

  • Для успешного использования регулярных выражений необходимо освоение его языка описания, состоящего из символов двух видов: обычных и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол – некоторый класс символов, например любую цифру или букву.

  • В регулярных выражениях часто используют повторители. Повторители – это метасимволы, которые располагаются непосредственно после обычного символа или класса символов и задают количество его повторений в выражении.

  • В регулярных выражениях можно использовать конструкцию выбора из нескольких элементов выражения. Варианты выбора перечисляются через вертикальную черту. Для группирования элементов выражения используются круглые скобки. Например, если требуется определить присутствует ли в тексте хотя бы один элемент из списка ”cat”, “dog” и “horse”, можно использовать регулярное выражение: cat|dog|horse.

  • Если требуется описать в выражении обычный символ, совпадающий с каким-либо метасимволом, его предваряют обратной косой чертой. Например, для поиска в тексте символа точки следует записать \. , а для поиска косой черты - \\ .

  • Для группирования элементов выражения используются круглые скобки. Группирование применяется во многих случаях, например, если требуется задать повторитель не для отдельного символа, а для последовательности. Кроме того, группирование служит для запоминания в некоторой переменной фрагмента текста, совпавшего с выражением, заключенным в скобки. Имя переменной задается в угловых скобках или апострофах: (? <имя_переменной> фрагмент_выражения). Фрагмент текста, совпавший при поиске с фрагментом регулярного выражения, заносится в переменную с заданным именем.

  • Еще один вариант применения группирования – формирование обратных ссылок. Все конструкции, заключенные в круглые скобки, автоматически нумеруются начиная с 1. Эти номера, предваренные обратной косой, можно использовать для ссылок на соответствующую конструкцию. Круглые скобки могут быть вложенными, при этом номер конструкции определяется порядком открывающей скобки в выражении.

  • В регулярное выражение можно помещать комментарии, которые либо помещаются внутрь конструкции (?#), либо располагаются, начиная от символа # до конца строки.

  • Классы библиотеки .NET для работы с регулярными выражениями объединены в пространство имен System.Text.RegularExpressions.

Формулировка задания

Задан файл с текстом произвольной длины и содержания.

Файлы с текстом сгенерировать на основе:

  1. Книги в формате TXT

  2. Книги в формате HTML

Требуется считать текст из файла и произвести с ним рекомендуемые преобразования. При этом, для описания регулярного выражения в классе Regex определить перегруженные конструкторы с параметрами для обработки выражения.

Обработка выражения подразумевает:

А. Поиск в тексте повторяющихся слов, расположенных подряд и разделенных произвольным количеством пробелов, независимо от регистра;

Б. Поиск фрагмента строки, соответствующих заданному выражению;

В. Поиск повторяющихся слов в двух строках;

Д. Выделение из строки слов и чисел;

З. Замена всех вхождений какого-либо символа другим символом;

И. Анализ текстового файла журнала Web – сервера (файлы архива apache-samples.rar), каждая строка которого содержит информацию об одном соединении с сервером для составления итогового отчета в удобной для восприятия форме;

K. Определить соответствует ли текст регулярному выражению;

Л. Вернуть все подстроки совпадающие с регулярным выражением;

О. Заменить все вхождения регулярного выражения заданной строкой (например, заменить все теги html на пустые строки).

Контрольные вопросы:

  1. Что реализует регулярное выражение?

  2. Какие действия можно выполнять с помощью регулярных выражений?

  3. Что позволяет делать класс Regex и конструктор этого класса?

  4. Приведите примеры некоторых шаблонов, которые можно передавать в качестве параметра классу Regex.

  5. Какие вспомогательные класса, помимо Regex и Match определены в пространстве имен Sysem.Text.RegularExpressions и их содержание?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]