Поиск
 

Классы

Описание методов и свойств классов .NET

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Regex - Регулярные выражения

Для удобства работы с регулярными выражениями добавим пространство имен:



using System.Text.RegularExpressions;




Класс Regex как раз входит в данный namespace;

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

Проверка вхождения строки в шаблон


Имеется задача: выяснить содержит ли строка дату в формате привычном для стран СНГ ДД.НН.ГГГГ

Для это мы будем использовать метод IsMatch класса Regex.
Первым параметром передаем собственно строку, в котором будет выполняться поиск, вторым параметром передаем Собственно шаблон (регулярное выражение)
В случае успешного вхождения метод вернет true иначе false;



string str = "Попробуем найти 12.03.2008 тут дату";
bool isDate = Regex.IsMatch(str, @"\d{2}\.\d{2}\.\d{4}");
if (isDate)
    MessageBox.Show("Нашли");
else
    MessageBox.Show("Нет даты");




поиск строки


Метод Match также позволяет найти вхождение строки в шаблон плюс к этому Match покажет ту самую найденную строку
Входные параметры теже, а вот вернет метод объект Match
Посмотрим на примере как вывести найденную дату



string str = "Попробуем найти 12.03.2008 тут дату";
Match m = Regex.Match(str, @"(?\d{2}\.\d{2}\.\d{4})");
if (m.Success)
{
    MessageBox.Show(m.Groups["date"].Value);
}




как видите чтобы вывести дату мы задали группу ? а затем используя свойство Groups вывели значение
а что если дат несколько? нам поможет метод Matches который вернет MatchCollection

Поиск строк




string str = "Попробуем 12.11.2008 найти 12.03.2008 тут 12.03.2002 дату";
MatchCollection mc = Regex.Matches(str, @"(?\d{2}\.\d{2}\.\d{4})");
for (int i=0;i{
    MessageBox.Show(mc[i].Groups["date"].Value);
}




mc.Count показывает количество найденных фрагментов (в нашем случае дат)

Замена текста по шаблону


А что если вам надо заменить часть текста? Поможет Replace
Первый параметр - Строка
Второй - Шаблон
Третий - Строка замены
Возвращает метод новую строку
меняем все даты на "Здесь была дата"



string str = "Попробуем 12.11.2008 найти 12.03.2008 тут 12.03.2002 дату";
string newStr = Regex.Replace(str, @"\d{2}\.\d{2}\.\d{4}", "Сдесь была дата");
MessageBox.Show(newStr);




Разбивка по шаблону


И последний метод который требует внимание это Split. Split разбивает строку и возвращает массив string
в качестве разделителя используется регулярное выражение



foreach(string part in Regex.Split(str, @"\d{2}\.\d{2}\.\d{4}"))
{
    MessageBox.Show(part);
}



Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (3 - 2 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии

Комментирует hfm 20.07.2010 22:03:04
Регулярные выражения - тема интересная, но хотелось бы побольше о самих шаблонах