Работа с регулярными выражениями в C#

В C# поддерживается работа с регулярными выражениями. Средства для работы с ними собраны в пространстве имён System.Text.RegularExpressions. При этом основой механизма обработки регулярных выражений является класс Regex.

Создание объекта для обработки регулярного выражения

Допустим, есть регулярное выражение для проверки номера телефона в определённом формате.

Для того чтобы начать работу с этим регулярным выражением необходимо создать экземпляр класса Regex передав в качестве параметра конструктора данное выражение.

Регулярное выражение задаётся только один раз при создании экземпляра класса Regex. Для работы с другим регулярным выражением потребуется создать новый экземпляр этого класса.

Поиск соответствий

Единичный результат поиска соответствий представлен объектом класса Match и доступен через его свойство Value.

Для того чтобы найти единичное соответствие регулярному выражению (при его наличии) необходимо воспользоваться методом Match класса Regex передав ему в качестве параметра анализируемую строку.

Этот способ корректно работает и в случае наличия в анализируемой строке нескольких соответствий. В этом случае в объекте Match будет храниться только самое первое соответствие от её начала.

Если же требуется получить все соответствия можно прибегнуть к одному из двух следующих способов:

  • Воспользоваться методом Matches класса Regexp (вызывается аналогично Match), который возвратит все соответствия регулярному выражению в виде объекта класса MatchCollection.
  • Воспользоваться методом NextMatch самого класса Match, который возвратит объект этого класса для следующего соответствия, если оно есть (можно проверить при помощи свойства Success).

Для того чтобы просто проверить наличие соответствий регулярному выражению в анализируемой строке служит метод IsMatch класса Regex. Этот метод принимает в качестве аргумента анализируемую строку и при наличии в ней соответствий регулярному выражению возвращает true.

Замена фрагментов текста по регулярному выражению

Для того чтобы в исходном тексте заменить фрагменты соответствующие регулярному выражению на другой фрагмент служит метод Replace класса Regex. Этот метод имеет несколько перегрузок. Самая часто используемая из них принимает два параметра исходную строку и строку с фрагментом для замены.

Например:

В данном случае все соответствующие регулярному выражению телефонные номера в исходной строке будут заменены следующим текстом: «<здесь был номер телефона>».

Разделение строк по регулярному выражению

Для того чтобы разделить исходную строку на массив подстрок по позициям соответствующим регулярному выражению используется метод Split класса Regex. Он также имеет несколько перегрузок. Самая распространённая из них принимает в качестве параметра только исходную строку.

Например:

Таким образом, в C# можно решать весь спектр задач связанных с регулярными выражениями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *