Использование Regex в C#: основные конструкции и примеры


Регулярные выражения (регулярки) — это мощный инструмент для работы с текстом в языке программирования C#. Регулярки представляют собой шаблоны, которые описывают набор символов, соответствующих определенным правилам. В этой статье мы рассмотрим основы работы с регулярками в C#.

C# и Regex: лучший способ работать с текстовыми данными

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

Для создания регулярного выражения в C# используется класс Regex из пространства имен System.Text.RegularExpressions. Класс Regex имеет несколько конструкторов, которые позволяют создать регулярное выражение из строки или из объекта типа Regex.

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

string pattern = @"^\d{3}-\d{2}-\d{4}$";
Regex regex = new Regex(pattern);

В этом примере мы создаем регулярное выражение для проверки соответствия строки формату SSN (Social Security Number), который имеет вид xxx-xx-xxxx, где x — цифра.

Операторы и символы

Регулярные выражения в C# используют специальные символы и операторы для описания шаблонов. Некоторые из наиболее распространенных символов и операторов:

  • ^ — начало строки
  • $ — конец строки
  • . — любой символ
  • * — 0 или более повторений предыдущего символа или группы символов
  • + — 1 или более повторений предыдущего символа или группы символов
  • ? — 0 или 1 повторение предыдущего символа или группы символов
  • [] — набор символов, которые могут находиться в данной позиции
  • () — группировка символов в подвыражение

Вот несколько примеров использования этих символов и операторов:

string pattern = @"^[a-zA-Z]+$"; // только буквы
string pattern = @"^\d+$"; // только цифры
string pattern = @"^\w+$"; // буквы и цифры
string pattern = @"^\d{3}-\d{2}-\d{4}$"; // формат SSN
string pattern = @"(red|blue|green)"; // слова red, blue или green

Модификаторы

В C# регулярные выражения могут содержать модификаторы, которые изменяют поведение выражения. Некоторые из наиболее распространенных модификаторов:

  • i — игнорировать регистр
  • m — многострочный режим
  • s — однострочный режим
  • x — игнорировать проделение пробелов и комментариев

Модификатор i игнорирует регистр символов, так что регулярное выражение будет соответствовать строкам независимо от регистра символов. Например:

string pattern = @"hello";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);

Это выражение будет соответствовать строкам «hello», «Hello», «HELLO» и т. д.

Модификатор m используется для включения многострочного режима. В этом режиме символы «^» и «$» соответствуют началу и концу любой строки в тексте, а не только началу и концу всей строки. Например:

string pattern = @"^hello$";
Regex regex = new Regex(pattern, RegexOptions.Multiline);

Это выражение будет соответствовать строкам, которые содержат только слово «hello» в начале или в конце строки.

Модификатор s используется для включения однострочного режима. В этом режиме символ «.» соответствует любому символу, включая символы новой строки. Например:

string pattern = @".+";
Regex regex = new Regex(pattern, RegexOptions.Singleline);

Это выражение будет соответствовать любой строке, включая символы новой строки.

Модификатор x используется для игнорирования пробелов и комментариев в регулярном выражении. Это может быть полезно для улучшения читаемости выражения. Например:

string pattern = @"
                ^               # начало строки
                \d{3}-\d{2}-\d{4} # SSN формат
                $               # конец строки
                ";
Regex regex = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);

В этом примере мы использовали модификатор x для разделения выражения на несколько строк и добавления комментариев.

Использование регулярных выражений

Когда вы создали регулярное выражение в C#, вы можете использовать его для поиска соответствующих строк в тексте. Для этого используйте методы класса Regex, такие как Match, Matches и Replace.

Метод Match возвращает первое совпадение в тексте. Например:

string text = "hello world";
string pattern = @"hello";
Regex regex = new Regex(pattern);
Match match = regex.Match(text);
if (match.Success)
{
    Console.WriteLine("Найдено совпадение!");
}

Это выражение найдет первое вхождение слова «hello» в строке «hello world».

Метод Matches возвращает все совпадения в тексте. Например:

string text = "hello world, hello universe";
string pattern = @"hello";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(text);
foreach (Match match in matches)
{
    Console.WriteLine("Найдено совпадение: " + match.Value);
}

Это выражение найдет все вхождения слова «hello» в строке «hello world, hello universe».

Метод Replace заменяет все совпадения в тексте на другую строку. Например:

string text = "hello world, hello universe";
string pattern = @"hello";
string replacement = "hi";
Regex regex = new Regex(pattern);
string result = regex.Replace(text, replacement);
Console.WriteLine(result);

Это выражение заменит все вхождения слова «hello» в строке «hello world, hello universe» на слово «hi».

Заключение

Регулярные выражения — это мощный инструмент для поиска и обработки текстовой информации в C#. В этой статье мы рассмотрели основные конструкции регулярных выражений в C#, а также модификаторы, которые позволяют управлять поведением выражения. Мы также рассмотрели, как использовать регулярные выражения в C# для поиска и замены текстовых данных. Надеемся, что эта статья поможет вам лучше понимать регулярные выражения в C# и использовать их в ваших проектах.

Полезные ссылки по Regex в C#

  1. Документация по классу Regex в C#
  2. Регулярные выражения в C# на сайте Learn C#
  3. Статья «Регулярные выражения в C#» на сайте TutsPlus
  4. Руководство по использованию регулярных выражений в C# на сайте C# Station
  5. Введение в регулярные выражения в C# на сайте DotNetPerls
  6. Статья «Как использовать регулярные выражения в C#» на сайте Guru99
  7. Введение в регулярные выражения на сайте Regular-Expressions.info
  8. Статья «Регулярные выражения в C#: примеры использования» на сайте InfoWorld
  9. Статья «Регулярные выражения в C#: полное руководство» на сайте Udemy
  10. Регулярные выражения в C# на сайте Rosetta Code

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