|
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 Регулярные выражения - тема интересная, но хотелось бы побольше о самих шаблонах
|
|