Регулярные выражения в C#. ООП Реферат Васькина Д.Д. БИВТ-21-5. Реферат по дисциплине Объектноориентированное программирование
Скачать 55.08 Kb.
|
Министерство науки и высшего образования РФ ФГАОУ ВПО Национальный исследовательский технологический университет «МИСиС» Институт Информационных технологий и компьютерных наук (ИТКН) Кафедра Инфокоммуникационных технологий (ИКТ) Реферат по дисциплине «Объектно-ориентированное программирование» на тему «Регулярные выражения в C#» Выполнил: студент группы БИВТ-21-5 Васькина Д.Д. Проверил: Стучилин В.В, Москва, 2022 СодержаниеВведение 3 1Знакомство с регулярными выражениями 4 2Метасимволы в регулярных выражениях C# 4 3Возможности регулярных выражений C# 6 3.1Использование метода IsMatch() 7 3.2Использование метода Match() 7 3.3Использование метода Replace() 8 3.4Использование метода Split() 9 3.5Использование метода Matches() 9 4Параметры регулярных выражений 10 Заключение 12 Список использованной литературы 13 Введение В последнее время с огромной скоростью развиваются информационные технологии, а также становятся популярными различные методы, способы, механизмы и инструменты, которые помогают оптимизировать работу программистов. Одним из таких методов, для обработки текстовой информации, являются регулярные выражения (от англ. Regular Expression). С помощью данного инструмента можно эффективно выполнять различные задачи, такие как, например: удалить повторяющиеся слова в строке, сделать заглавными первые буквы всех слов, выделить из текста все номера телефонов, электронные адреса или же имена компьютеров и многое другое. Применение регулярных выражений позволяет сэкономить массу времени и сил. Целью реферата является изучение теоретических и практических задач, решаемых с помощью регулярных выражений на языке программирования C#. Реализация данной цели обусловила необходимость решения следующих задач: Изучить язык регулярных выражений для C#; Рассмотреть механизмы реализации регулярных выражений; Выделить классы задач, решаемые с помощью регулярных выражений. Регулярные выражения — это чрезвычайно важная часть деятельности программиста и полезный инструмент в рабочем арсенале. Знакомство с регулярными выражениями Регулярные выражения — это часть небольшой технологической области, невероятно широко используемой в огромном диапазоне программ. Регулярные выражения можно представить себе как мини-язык программирования, имеющий одно специфическое назначение: находить подстроки в больших строковых выражениях. Регулярное выражение в C#, также известное как regex или regexp, представляет собой последовательность символов, определяющих шаблон. Такой шаблон может состоять из литералов, чисел, символов или конструкций. Язык регулярных выражений предназначен специально для обработки строк. Он включает два средства: [2] Набор управляющих кодов для идентификации специфических типов символов Система для группирования частей подстрок и промежуточных результатов таких действий С помощью регулярных выражений можно выполнять достаточно сложные и высокоуровневые действия над строками: Идентифицировать все повторяющиеся слова в строке Сделать заглавными первые буквы всех слов Преобразовать первые буквы всех слов длиннее трех символов в заглавные Обеспечить правильную капитализацию предложений Выделить различные элементы в URI. [2] Метасимволы в регулярных выражениях C# Главным преимуществом регулярных выражений является использование метасимволов — специальные символы, задающие команды, а также управляющие последовательности, которые работают подобно управляющим последовательностям C#. Это символы, предваренные знаком обратного слеша (\) и имеющие специальное назначение. [2] Таблица 1 Метасимволы, используемые в регулярных выражениях
Продолжение таблицы 1
В регулярных выражениях также используются повторители – это специальные метасимволы, которые располагаются сразу после обычного символа (группы символов) и задают количество его повторений в выражении. [2] Таблица 2 – Повторители, используемые в регулярных выражениях
Регулярное выражение записывается в виде строкового литерала, перед строкой необходимо ставить символ @. Его можно не ставить, если в качестве шаблона используется шаблон без метасимволов. Пример: слово rus - @"rus" или "rus". [4] Примеры регулярных выражений: Время в формате ЧЧ:ММ:СС: @"([01]d|2[0-3])(:[0-5]d){2}$" Номер телефона в формате +7xxx-xxx-xx-xx: @"+7d{3}-d{3}(-dd){2}" Дата рождения в формате ДД.ММ.ГГГГ или ДД/ММ/ГГГГ: @"(0[1-9] | [12][0-9] | [3][01]) [/.] (0[1-9] | 1[0-2]) [/.] (19|20)dd" Номер автомобиля в формате xYYYxx, где x – буква, y – цифра: @"[АВЕКМНОРСТХУ]ddd[АВЕКМНОРСТХУ]{3}" Адрес электронной почты: @"bw+([.w]+)*w@w((.w)*w+)*.w{2,3}b" Если нужно найти какой-то символ, который является метасимволом (например, точка), можно это сделать защитив её обратным слешем. Т.е. просто точка означает любой одиночный символ, а \. означает просто точку. Возможности регулярных выражений C# Регулярные выражения имеют большой спектр применения и можно выделить следующие возможности и особенности: [5] Сравнение с шаблоном: регулярные выражения отлично помогают определять, соответствует ли строка тому или иному формату – например, телефонному номеру, адресу электронной почты или номеру кредитной карты. Замена: при помощь регулярных выражений легко находить и заменять шаблоны в строке. Извлечение: при помощи регулярных выражений легко извлекать из шаблона фрагменты информации. Портируемость: почти в любом распространённом языке программирования есть своя библиотека регулярных выражений. Синтаксис в основном стандартизирован, поэтому вам не придется переучиваться регулярным выражениям при переходе на новый язык. [5] Все основные методы класса Regex реализованы в двух вариантах: статическом и экземплярном; при этом каждый из вариантов реализован для нескольких наборов параметров. Имеется шесть основных методов: [6] IsMatch (типа bool) - возвращает True, если требуемое выражение найдено, и False в противном случае; Match (типа Match) - возвращает первое найденное выражение; Matches (типа MatchCollection) - возвращает все найденные выражения; Split (типа string[]) - разбивает строку на фрагменты; разделители фрагментов определяются регулярным выражением; Replace (типа string) - заменяет найденные выражения. [6] Примеры методов приведены в следующих пунктах. Использование метода IsMatch() Для проверки того, подходит ли строка под регулярное выражение используется метод Regex.IsMatch(), возвращающий True, если текст подходит под регулярное выражение и False если нет. [1] В следующем примере определяется регулярное выражение, которое соответствует номеру телефона в формате +xxxx-xxx-xx-xx. Код программы: staticvoidMain(string[] args) { string[] str = { "+79-005553535", "89005553535", "+7-900-555-35-35", "+79005553535", "+7900-555-35-35" }; //Входные строки для сопоставления с действительным номером мобильного телефона. foreach (stringsinstr) { boolmatch = Regex.IsMatch(s, @"\+[7]\d{3}-\d{3}-\d{2}-\d{2}"); //Неизменное регулярное выражение Console.WriteLine("{0} is a mobile number {1}", s, match); } } Вывод программы: +79-005553535 is a mobile number False 89005553535 is a mobile number False +7-900-555-35-35 is a mobile number False +79005553535 is a mobile number False +7900-555-35-35 is a mobile number True Использование метода Match() Находит во входной строке подстроку, совпадающую с шаблоном регулярного выражения, и возвращает первое вхождение в качестве единого объекта Match. [1] В следующем примере определяется регулярное выражение, которое соответствует словам, начинающимся с буквы "a". Код программы: static void Main(string[] args) { string pattern = @"\b[t]\w+"; //Неизменноерегулярноевыражение string input = " In science, the importance is something that has been reached out, not the researcherhimself "; //Входнаястрока Match m = Regex.Match(input, pattern); if (m.Success) Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index); } Вывод программы: Found 'the' at position 13. Использование метода Replace() Метод Regex.Replace() производит замену одной подстроки другой. [1] В следующей таблице показано, как формируются метасимволы для замены: Таблица 3 - Метасимволы замены
В следующем примере выполняется поиск слова «руб» в строке с заменой его на символ «$». Код программы: static void Main(string[] args) { string input = "Добро пожаловать в наш магазин, вот наши цены: \n" + "\t 1 кг. яблок - 20 руб. \n" + "\t 2 кг. апельсинов - 30 руб. \n"; // В шаблоне используются 2 группы string pattern = @"\b(\d+)\W?(руб.)"; // Строказамены "руб." на "$" string replacement = "$$$1"; input = Regex.Replace(input, pattern, replacement); Console.WriteLine(input); } Вывод программы: Добро пожаловать в наш магазин, вот наши цены: 1 кг. яблок - $20 2 кг. апельсинов - $30 Использование метода Split() Для разбиения строки на части используется метод Regex.Split(), который возвращает массив строк (string[]) с частями исходной строки. [1] В следующем примере шаблон регулярного выражения используется [0-9]+ для разделения входной строки на цифры. Код программы: static void Main(string[] args) { string input = "Hello123,45World6789!"; //Входнаястрока. String pattern = "[0-9]+"; //Неизменноерегулярноевыражение String[] split = Regex.Split(input, pattern); for (int i = 0; i < split.Length; i++) { Console.Write("{0}", split[i]); if (i < split.Length - 1) Console.Write(" "); } } Вывод программы: Hello , World ! Использование метода Matches() Для поиска совпадений используется метод Regex.Matches(). Этот метод возвращает массив класса MatchCollection, содержащий найденные совпадения и ряд другой информации. Доступ к найденному тексту производится с помощью конструкции match[i].Value. Получить количество найденных совпадений можно из свойства match.Count. [2] В следующем примере шаблон регулярного выражения используется для поиска символа «M». Код программы: static void Main(string[] args) { string pattern = @"\b[t]\w+"; //Неизменное регулярное выражение Regex rg = new Regex(pattern); //Новыйэкземпляр Regex string person = "In science, the importance is something that has been reached out, not the researcherhimself"; //Входнаястрока MatchCollection matches = rg.Matches(person); for (int i = 0; i < matches.Count; i++) { Console.WriteLine(matches[i].Value); } } Вывод программы: the that the Параметры регулярных выражений По умолчанию при сравнении входной строки с любыми литералами в шаблоне регулярного выражения учитывается регистр, пробел в шаблоне интерпретируется как литерал, а захватываемые группы в регулярном выражении именуются как явно, так и неявно. Вы можете изменить эти и некоторые другие аспекты поведения регулярного выражения по умолчанию с помощью параметров регулярного выражения. Эти параметры могут быть указаны как часть шаблона регулярного выражения или переданы конструктору класса Regex или статичному методу сопоставления шаблона как значение перечисления RegexOptions. [7] В следующей таблице показана часть информации о перечислении RegexOptions. Таблица 4 - Структура перечисления RegexOptions
Продолжение таблицы 4
После создания шаблона регулярного выражения с ним можно осуществить различные действия, в зависимости от того, что вам необходимо. [7] Заключение В заключении можно отметить, что регулярные выражения – очень полезный механизм для работы с текстом, который довольно часто используется на практике. Выполнены все поставленные задачи. В ходе выполнения работы были изучены принципы работы с регулярными выражениями, различные методы и метасимволы, присутствующие в регулярных выражениях в языке программирования C#. Были приведены примеры их использования. Список использованной литературы Руководство «Регулярные выражения C#». [Электронный ресурс] URL: https://betacode.net (Дата обращения: 28.03.2022) Регулярные выражения в C#. [Электронный ресурс] URL: https://professorweb.ru (Дата обращения 28.03.2022) Регулярные выражения .NET Framework [Электронный ресурс] URL: https://docs.microsoft.com/ru (Дата обращения 28.03.2022) Регулярные выражения [Электронный ресурс] URL: Регулярные выражения.docx?forcedownload=1 (yandex.ru) (Дата обращения 13.04.2022) Регулярные выражения [Электронный ресурс] URL: https://docs.yandex.ru (Дата обращения 13.04.2022) Язык программирования C# [Электронный ресурс] URL: http://edu.mmcs.sfedu.ru (Дата обращения 13.04.2022) Параметры регулярных выражений [Электронный ресурс] URL: https://docs.microsoft.com/ru (Дата обращения 13.04.2022) |