Перевод статьи подготовлен специально для студентов курса «Разработчик С#».
![](https://habrastorage.org/r/w1560/webt/0g/u8/kl/0gu8klvucdp2yraeiqghv95spoo.png)
Класс Regex реализует регулярные выражения в C#. В этой статье вы узнаете, как использовать C# Regex для проверки различных пользовательских входных данных.
Regex в C# реализует регулярные выражения. Класс C# Regex предлагает методы и свойства для анализа большого текста, с целью поиска шаблонов символов. В этой статье вы узнаете, как использовать класс .NET Regex в C#.
Регулярное выражение используется для проверки соответствия строки шаблону. Регулярное выражение (regular expression или regex, или regexp) — это последовательность символов, которая определяет шаблон. Шаблон может состоять из литералов, чисел, символов, операторов или конструкций. Шаблон используется для поиска соответствий в строке или файле.
Регулярные выражения часто используются при проверке входных данных, анализе и поиске строк. Например, проверка достоверной даты рождения, номера социального страхования, полного имени, в котором имя и фамилия разделены запятой, поиск числа вхождений подстроки, замена подстрок, форматов даты, допустимых форматов электронной почты, формата валюты, и так далее.
В .NET класс Regex представляет механизм регулярных выражений. Его можно использовать для быстрого синтаксического анализа большого количества текста, чтобы найти конкретные шаблоны символов, извлекать, редактировать, заменять или удалять текстовые подстроки, и добавлять извлеченные строки в коллекцию для генерации отчета.
Класс Regex определен в пространстве имен System.Text.RegularExpressions. Конструктор класса Regex принимает в качестве параметра строку шаблона вместе с другими необязательными параметрами.
Следующий фрагмент кода создает регулярное выражение из шаблона. Здесь шаблон соответствует слову, начинающемуся с буквы «M».
Следующий фрагмент кода содержит длинный текст с именами авторов, которые необходимо проанализировать.
Метод Matches используется для поиска всех совпадений в регулярном выражении и возвращает MatchCollection.
Следующий фрагмент кода проходит по коллекции совпадений.
Вот полный код:
В приведенном выше примере код ищет символ «M». Но что, если слово начинается с «м». Следующий фрагмент кода использует параметр
Метод
Следующий фрагмент кода заменяет пробелы на ‘-‘.
В следующем примере шаблон регулярного выражения [a-z] + и метод
Регулярные выражения являются стандартом сопоставления с шаблоном для синтаксического анализа и изменения строк, и позволяют пользователю выразить, как компьютерная программа должна искать указанный шаблон в тексте, а затем, что она должна делать, когда найдено каждое совпадение с данным шаблоном. Иногда их сокращают как «regex». Они являются мощным способом поиска и изменения строк, которые принимают определенный формат.
Вот простой пример кода на C#, который показывает, как используются регулярные выражения.
Вот подробное объяснение регулярных выражений и их использования в C# и .NET:
Регулярные выражения в C#
Для проверки множества адресов электронной почты мы можем использовать следующие регулярные выражения. Мы разделяем адреса с помощью разделителя ';'
Если вы хотите использовать разделитель ',', то используйте следующее
и если вы хотите использовать оба разделителя ',' и ';' то используйте это
Таким образом, используя приведенное выше регулярное выражение, вы можете проверять как один, так и несколько адресов сразу.
Узнайте больше можно здесь: Regex для проверки нескольких адресов электронной почты.
В этой статье объясняется, как использовать регулярные выражения (класс Regex пространства имен System.Text.RegularExpressions) в C# и .NET.
Мы можем использовать метод Regex.Match, который принимает входные данные и регулярное выражение, и возвращает success, если
Узнайте больше можно здесь:
Проверка ввода пользователя с помощью регулярных выражений
В этой части мы узнаем, как разбивать строку, используя RegEx в C#. Regex разбивает строку на основе шаблона. Он обрабатывает разделитель, указанный в качестве шаблона. Вот почему Regex лучше, чем string.Split. Вот несколько примеров того, как разбить строку, используя Regex в C#. Давайте напишем код.
Для использования Regex для разбиения строки нужно добавить следующие пространства имен.
Пример 1:
Отделить цифры от строк с помощью Regex.
Приведенный выше код разбивает строку, используя \D+, и выводит цифры посредством итерации по результату.
Узнайте больше можно здесь:
Разделить строку с помощью регулярных выражений в C#
В этой части я расскажу вам о том, как заменить специальные символы с помощью регулярных выражений в C#.
Если у вас есть строка со специальными символами и вы хотите удалить или заменить их, вы можете использовать для этого регулярное выражение.
Используйте следующий код:
Этот код удалит все специальные символы, но если вы не хотите удалять некоторые специальные символы, например, запятую "," и двоеточие ":" — внесите следующие изменения:
Точно так же вы можете вносить изменения в соответствии с вашими требованиями.
Если вы новичок в регулярных выражениях, я рекомендую прочитать эту статью "Введение в регулярные выражения".
Вот еще одна статья: "Использование регулярных выражений в C#"
![](https://habrastorage.org/webt/0g/u8/kl/0gu8klvucdp2yraeiqghv95spoo.png)
Класс Regex реализует регулярные выражения в C#. В этой статье вы узнаете, как использовать C# Regex для проверки различных пользовательских входных данных.
Regex в C# реализует регулярные выражения. Класс C# Regex предлагает методы и свойства для анализа большого текста, с целью поиска шаблонов символов. В этой статье вы узнаете, как использовать класс .NET Regex в C#.
Регулярные выражения
Регулярное выражение используется для проверки соответствия строки шаблону. Регулярное выражение (regular expression или regex, или regexp) — это последовательность символов, которая определяет шаблон. Шаблон может состоять из литералов, чисел, символов, операторов или конструкций. Шаблон используется для поиска соответствий в строке или файле.
Регулярные выражения часто используются при проверке входных данных, анализе и поиске строк. Например, проверка достоверной даты рождения, номера социального страхования, полного имени, в котором имя и фамилия разделены запятой, поиск числа вхождений подстроки, замена подстрок, форматов даты, допустимых форматов электронной почты, формата валюты, и так далее.
Класс Regex
В .NET класс Regex представляет механизм регулярных выражений. Его можно использовать для быстрого синтаксического анализа большого количества текста, чтобы найти конкретные шаблоны символов, извлекать, редактировать, заменять или удалять текстовые подстроки, и добавлять извлеченные строки в коллекцию для генерации отчета.
Класс Regex определен в пространстве имен System.Text.RegularExpressions. Конструктор класса Regex принимает в качестве параметра строку шаблона вместе с другими необязательными параметрами.
Следующий фрагмент кода создает регулярное выражение из шаблона. Здесь шаблон соответствует слову, начинающемуся с буквы «M».
// Создаем шаблон для слова, которое начинается с буквы "M"
string pattern = @"\b[M]\w+";
// Создаем экземпляр Regex
Regex rg = new Regex(pattern);
Следующий фрагмент кода содержит длинный текст с именами авторов, которые необходимо проанализировать.
// Длинная строка
string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll";
Метод Matches используется для поиска всех совпадений в регулярном выражении и возвращает MatchCollection.
// Получаем все совпадения
MatchCollection matchedAuthors = rg.Matches(authors);
Следующий фрагмент кода проходит по коллекции совпадений.
// Выводим всех подходящих авторов
for (int count = 0; count < matchedAuthors.Count; count++)
Console.WriteLine(matchedAuthors[count].Value);
Вот полный код:
// Создаем шаблон для слова, которое начинается с буквы "M"
string pattern = @"\b[M]\w+";
// Создаем экземпляр Regex
Regex rg = new Regex(pattern);
// Длинная строка
string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll";
// Получаем все совпадения
MatchCollection matchedAuthors = rg.Matches(authors);
/// Выводим всех подходящих авторов
for (int count = 0; count < matchedAuthors.Count; count++)
Console.WriteLine(matchedAuthors[count].Value);
В приведенном выше примере код ищет символ «M». Но что, если слово начинается с «м». Следующий фрагмент кода использует параметр
RegexOptions.IgnoreCase
, для того, чтобы Regex не обращал внимания на регистр.// Создаем шаблон для слова, которое начинается с буквы "M"
string pattern = @"\b[m]\w+";
// Создаем экземпляр Regex
Regex rg = new Regex(pattern, RegexOptions.IgnoreCase);
Замена множественных пробелов с помощью Regex
Метод
Regex.Replace()
используется для замены совпавшей строки новой строкой. В следующем примере выполняется поиск множественных пробелов в строке с заменой на единичный.// Длинная строка с множественными пробелами
string badString = "Here is a strig with ton of white space." ;
string CleanedString = Regex.Replace(badString, "\\s+", " ");
Console.WriteLine($"Cleaned String: {CleanedString}");
Следующий фрагмент кода заменяет пробелы на ‘-‘.
string CleanedString = Regex.Replace(badString, "\\s+", "-");
Разбиение строки на символы с помощью Regex
В следующем примере шаблон регулярного выражения [a-z] + и метод
Regex.Split()
используются для разделения строки на символы без учета их регистра.// Разбиваем строку по символам
string azpattern = "[a-z]+";
string str = "Asd2323b0900c1234Def5678Ghi9012Jklm";
string[] result = Regex.Split(str, azpattern,
RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500));
for (int i = 0; i < result.Length; i++)
{
Console.Write("'{0}'", result[i]);
if (i < result.Length - 1)
Console.Write(", ");
}
Регулярные выражения в C#
Регулярные выражения являются стандартом сопоставления с шаблоном для синтаксического анализа и изменения строк, и позволяют пользователю выразить, как компьютерная программа должна искать указанный шаблон в тексте, а затем, что она должна делать, когда найдено каждое совпадение с данным шаблоном. Иногда их сокращают как «regex». Они являются мощным способом поиска и изменения строк, которые принимают определенный формат.
Вот простой пример кода на C#, который показывает, как используются регулярные выражения.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace RegularExpression1
{
class Program
{
static void Main(string[] args)
{
Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}");
// класс Regex представляет неизменное регулярное выражение.
string[] str = { "+91-9678967101", "9678967101", "+91-9678-967101", "+91-96789-67101", "+919678967101" };
// Входные строки для сопоставления с действительным номером мобильного телефона.
foreach (string s in str)
{
Console.WriteLine("{0} {1} a valid mobile number.", s,
r.IsMatch(s) ? "is" : "is not");
// Метод IsMatch используется для валидации строки, или чтобы гарантировать, что строка соответствует определенному шаблону.
}
}
}
}
Вот подробное объяснение регулярных выражений и их использования в C# и .NET:
Регулярные выражения в C#
Regex для проверки электронной почты
Для проверки множества адресов электронной почты мы можем использовать следующие регулярные выражения. Мы разделяем адреса с помощью разделителя ';'
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;]{0,1}\s*)+$
Если вы хотите использовать разделитель ',', то используйте следующее
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[,]{0,1}\s*)+$
и если вы хотите использовать оба разделителя ',' и ';' то используйте это
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;,.]{0,1}\s*)+$
Таким образом, используя приведенное выше регулярное выражение, вы можете проверять как один, так и несколько адресов сразу.
Узнайте больше можно здесь: Regex для проверки нескольких адресов электронной почты.
Проверка пользовательского ввода с помощью регулярных выражений
В этой статье объясняется, как использовать регулярные выражения (класс Regex пространства имен System.Text.RegularExpressions) в C# и .NET.
Мы можем использовать метод Regex.Match, который принимает входные данные и регулярное выражение, и возвращает success, если
if (!Regex.Match(firstNameTextBox.Text, "^[A-Z][a-zA-Z]*$").Success) {}
if (!Regex.Match(addressTextBox.Text, @"^[0-9]+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
if (!Regex.Match(cityTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
if (!Regex.Match(stateTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
if (!Regex.Match(zipCodeTextBox.Text, @"^\d{5}$").Success)
{
if (!Regex.Match(phoneTextBox.Text, @"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success)
Узнайте больше можно здесь:
Проверка ввода пользователя с помощью регулярных выражений
Разделить строку с помощью Regex.split(регулярное выражение) в C#
В этой части мы узнаем, как разбивать строку, используя RegEx в C#. Regex разбивает строку на основе шаблона. Он обрабатывает разделитель, указанный в качестве шаблона. Вот почему Regex лучше, чем string.Split. Вот несколько примеров того, как разбить строку, используя Regex в C#. Давайте напишем код.
Для использования Regex для разбиения строки нужно добавить следующие пространства имен.
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
Пример 1:
Отделить цифры от строк с помощью Regex.
string Text = "1 One, 2 Two, 3 Three is good.";
string[] digits = Regex.Split(Text, @"\D+");
foreach (string value in digits)
{
int number;
if (int.TryParse(value, out number))
{
Console.WriteLine(value);
}
}
Приведенный выше код разбивает строку, используя \D+, и выводит цифры посредством итерации по результату.
Узнайте больше можно здесь:
Разделить строку с помощью регулярных выражений в C#
Заменить специальные символы из строки с помощью Regex
В этой части я расскажу вам о том, как заменить специальные символы с помощью регулярных выражений в C#.
Если у вас есть строка со специальными символами и вы хотите удалить или заменить их, вы можете использовать для этого регулярное выражение.
Используйте следующий код:
Regex.Replace(your String, @"[^0-9a-zA-Z]+", "")
Этот код удалит все специальные символы, но если вы не хотите удалять некоторые специальные символы, например, запятую "," и двоеточие ":" — внесите следующие изменения:
Regex.Replace(Your String, @"[^0-9a-zA-Z:,]+", "")
Точно так же вы можете вносить изменения в соответствии с вашими требованиями.
Примечание:
Следует отметить, что регулярные выражения не являются панацеей для каждой небольшой манипуляции со строкой. Если вам нужен простой синтаксический анализ, предоставляемый классом String или другими классами, старайтесь его и использовать.
Для дальнейшего прочтения
Если вы новичок в регулярных выражениях, я рекомендую прочитать эту статью "Введение в регулярные выражения".
Вот еще одна статья: "Использование регулярных выражений в C#"