Поделиться через


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

Обновлен: Ноябрь 2007

Язык регулярных выражений создан и оптимизирован для работы с текстом. В языке используется два основных типа знаков: обычные текстовые знаки и метасимволы. Своими возможностями регулярные выражения обязаны именно метасимволам.

Распространенными метасимволами являются знаки "?" и "*", которые использовались в файловой системе DOS для представления одиночных знаков или групп знаков. Файловая команда DOS COPY *.DOC A: производит копирование всех файлов с расширением DOC на диск A. Метасимвол "*" здесь обозначает произвольное имя файла, стоящее перед расширением файла DOC. В регулярных выражениях эта концепция была существенно расширена, что привело к формированию обширного набора метасимволов, позволяющих создавать весьма сложные выражения с помощью сравнительно небольшого количества знаков.

Например, при применении регулярного выражения \s2000 к тексту сообщения, будут найдены все вхождения строки "2000", которым предшествует любой пробельный символ, например пробел или табуляция.

xbyh1eyc.alert_note(ru-ru,VS.90).gifПримечание.

При использовании языков C++, C# или JScript специальные escape-знаки, например "\s", необходимо предварять дополнительной обратной косой чертой (например, "\\s2000"), чтобы указать на то, что обратная косая черта в escape-знаке является литеральным знаком. В противном случае обработчик регулярных выражений будет обрабатывать обратную косую черту и символ "s" в выражении \s как два различных оператора. При использовании Visual Basic 2005 добавлять обратную косую черту необязательно. При работе на C# можно использовать литеральные строки с префиксом @, в которых не действует escape-преобразование (например, @"\s2000").

С помощью регулярных выражений можно осуществлять и более сложный поиск. Например, регулярное выражение (?<char>\w)\k<char>, использующее именованные группы и механизм обратных ссылок, ведет поиск соседних парных знаков. Если применить его к строке "Я, пожалуй, выпью чашечку латте или мокко", то оно найдет совпадения в словах "латте" и "мокко" (подробные сведения об этом регулярном выражении см. в разделе Обратные ссылки.)

В следующих разделах описывается набор метасимволов, которые используются в языке регулярных выражений платформы .NET Framework, а также демонстрируется порядок применения классов регулярных выражений для реализации регулярных выражений в приложениях.

См. также

Основные понятия

Классы регулярных выражений

Ссылки

System.Text.RegularExpressions

Другие ресурсы

Подробные сведения о поведении регулярных выражений

Примеры регулярных выражений

Элементы языка регулярных выражений