Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Регулярные выражения ( использование | проверка | подстановочные знаки )

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

Регулярные выражения используются для обработки строк. Т.е. с помощью регулярных выражений можно выполнять следующую проверку:

  1. находить подстроку в строке
  2. удалять все повторяющиеся слова в строке
  3. сделать, что бы все слова начинались с заглавной буквы
  4. разделять, допустим, URL адрес на составляющие

Конечно же, все эти задачи ( проверки ) можно решить с помощью написания пользовательских функций. Но сколько это займет времени, сил, да и кода выйдет прилично. А использование регулярных выражений занимает всего-навсего пару строчек.

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

  1. создать объект System.Text.RegularExpressions.RegEx или вызвать функцию RegEx (она статическая)
  2. передать 2 аргумента - рабочую строку и регулярное выражение

Регулярное выражение и является строкой, которая содержит в себе инструкцию по выполнению проверки на языке регулярных выражений. Давайте рассмотрим основные символы для поиска в словах:

  1. « ^ »
  2. означает поиск в начале строки

    Регулярное выражение: ^qwe
    Верно: qwert, qwe
    Ошибочно: dfqwe rqwe

  3. « $ »
  4. означает поиск в конце строки

    Регулярное выражение: ^qwe
    Верно: dfqwe, rqwe
    Ошибочно: qwert, qwe

  5. « \b »
  6. задает границы слова

    Регулярное выражение: ^pot
    Верно: capot, spot
    Ошибочно: potter, capotn

  7. « \B »
  8. слово находится в середине

    Регулярное выражение: ^pot
    Верно: capotn
    Ошибочно: capot, spot

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

   Подстановочные знаки

Так же, как и во многих других языках (SQL, Perl), в синтаксисе языка регулярных выражений существуют подстановочные знаки:

  1. « * »
  2. повтор предшествующего символа или строки

    Регулярное выражение: ro*t
    Верно:rt, rooot

  3. « + »
  4. повтор предшествующего символа или строки, но не менее одного раза

    Регулярное выражение: ro+t
    Верно:rot, rooot
    Ошибочно: rt

  5. « ? »
  6. необязательный символ

    Регулярное выражение: ro?t
    Верно:rot, rt

  7. « . »
  8. любой символ

    Регулярное выражение: ro.t
    Верно:roit, rojt

  9. « [] »
  10. любой символ, который находится в скобках, так же можно задавать диапазоны значений символов

    Регулярное выражение: ro[xyz]t
    Верно:roxt, royt, rozt

  11. « {min,mam} »
  12. указывается минимальное (min) и максимальное (max) значения, указывающие на диапазон повторов данного символа или строки. Можно указать только минимальное или, только максимальное значение. Между min и max не должно быть никаких пробелов

    Регулярное выражение: r{2,4}
    Верно:porrta, podrrrras, rrraznoe
    Ошибочно: rt

Так же в регулярных выражениях есть специальные коды, которые упрощают их написание:

  1. « \d »
  2. соответствует цифрам

    Эквивалент: [0-9]

  3. « \D »
  4. что угодно, но не цифры

    Эквивалент: [^0-9]

Помимо двух аргументов, передаваемых при инициализации объекта, регулярное выражение еще принимает третий параметр - флаги:

  1. IgnoreCase - без учета регистра
  2. Multiline - поиск в каждой отдельной последовательности символов
  3. RightToLeft - поиск начинается с конца

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

string str = "Rabota kipit - nichego ne delaiy.";
Match mat = Regex.Match (str, @"Rabota kipit - (.*$)");
//mat = "nichego ne delaiy."

В С шарп использование регулярного выражения должно начинаться со знака « @ ». Тогда не возникнет проблем с обработкой спец. сигналов (например - косая черта).

Рекомендации к прочтению:

  1. Различия ООП в среде .NET от ООП в языке С++
  2. Зубчатый массив и класс Array
При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru