Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Введение в регулярные выражения






 

Язык регулярных выражений предназначен специально для обработки строк. Он включает два средства:

  • Набор управляющих кодов для идентификации специфических типов символов
  • Система для группирования частей подстрок и промежуточных результатов таких действий

С помощью регулярных выражений можно выполнять достаточно сложные и высокоуровневые действия над строками:

  • Идентифицировать (и возможно, помечать к удалению) все повторяющиеся слова в строке
  • Сделать заглавными первые буквы всех слов
  • Преобразовать первые буквы всех слов длиннее трех символов в заглавные
  • Обеспечить правильную капитализацию предложений
  • Выделить различные элементы в URI (например, имея https://www.professorweb.ru, выделить протокол, имя компьютера, имя файла и т.д.)

Разумеется, все эти задачи можно решить на С# с использованием различных методов System.String и System.Text.StringBuilder. Однако в некоторых случаях это потребует написания большого объема кода С#. Если вы используете регулярные выражения, то весь этот код сокращается буквально до нескольких строк. По сути, вы создаете экземпляр объекта System.Text.RegularExpressions.RegEx (или, что еще проще, вызываете статический метод RegEx()), передаете ему строку для обработки, а также само регулярное выражение (строку, включающую инструкции на языке регулярных выражений) — и все готово.

В следующей таблице показана часть информации о перечислениях RegexOptions:

Структура перечисления RegexOptions
Член Описание
Culturelnvariant Предписывает игнорировать национальные установки строки
ExplicitCapture Модифицирует способ поиска соответствия, обеспечивая только буквальное соответствие
IgnoreCase Игнорирует регистр символов во входной строке
IgnorePatternWhitespace Удаляет из строки не защищенные управляющими символами пробелы и разрешает комментарии, начинающиеся со знака фунта или хеша
Multiline Изменяет значение символов ^ и $ так, что они применяются к началу и концу каждой строки, а не только к началу и концу всего входного текста
RightToLeft Предписывает читать входную строку справа налево вместо направления по умолчанию — слева направо (что удобно для некоторых азиатских и других языков, которые читаются в таком направлении)
Singleline Специфицирует однострочный режим, в котором точка (.) символизирует соответствие любому символу

Главным преимуществом регулярных выражений является использование метасимволов — специальные символы, задающие команды, а также управляющие последовательности, которые работают подобно управляющим последовательностям С#. Это символы, предваренные знаком обратного слеша (\) и имеющие специальное назначение. Некоторые из данных метасимволов перечислены в таблице:

Метасимволы, используемые в регулярных выражениях C#
Символ Значение Пример Соответствует
^ Начало входного текста ^B B, но только как первый символ текста
$ Конец входного текста X$ X, но только как последний символ текста
. Любой одиночный символ кроме символа перевода строки (\n) i.text iqtext, iftext...
* Предыдущий символ может повторяться 0 или более раз on*e oe, one, onne, onnne...
+ Предыдущий символ может повторяться 1 или более раз on+e one, onne, onnne... (но не oe)
? Предыдущий символ может повторяться 0 или 1 раз on? e oe, one
\s Любой пробельный символ \sa [пробел]а, \ta, \na (\t и \n имеют тот же смысл, что и в С#)
\S Любой символ, не являющийся пробелом \SF aF, rF, cF, но не \tf
\b Граница слова ция\b Любое слово, заканчивающееся на «ция»
\B Любая позиция, кроме границы слова \BX\B Любой символ х в середине слова

 

 


Объектно-ориентированное программирование на C#






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.