Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Введение в регулярные выражения
Язык регулярных выражений предназначен специально для обработки строк. Он включает два средства:
- Набор управляющих кодов для идентификации специфических типов символов
- Система для группирования частей подстрок и промежуточных результатов таких действий
С помощью регулярных выражений можно выполнять достаточно сложные и высокоуровневые действия над строками:
- Идентифицировать (и возможно, помечать к удалению) все повторяющиеся слова в строке
- Сделать заглавными первые буквы всех слов
- Преобразовать первые буквы всех слов длиннее трех символов в заглавные
- Обеспечить правильную капитализацию предложений
- Выделить различные элементы в 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#
|