русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Символы, используемые в регулярных выражениях


Дата добавления: 2013-12-23; просмотров: 994; Нарушение авторских прав


Синтаксис регулярных выражений

Регулярное выражение на C# задается строковой константой. Это может быть обычная или @-константа. Чаще всего, следует использовать именно @-константу. Дело в том, что символ "\" широко применяется в регулярных выражениях как для записи escape-последовательностей, так и в других ситуациях. Обычные константы в таких случаях будут выдавать синтаксическую ошибку, а @-константы не выдают ошибок и корректно интерпретируют запись регулярного выражения.

В С# работа с регулярными выражениями выглядит следующим образом:

 

Regex re = new Regex("образец", "опции");

MatchCollection me = re.Matches("строка для поиска");

iCountMatchs = me.Count;

 

· re — это объект типа Regex. В конструкторе ему передается образец поиска и опции.

Конечно, регулярное выражение может быть совсем простым, например, строка "abc" задает образец поиска, так что при вызове соответствующего метода будут разыскиваться одно или все вхождения подстроки "abc" в искомую строку. Но могут существовать и очень сложно устроенные регулярные выражения.

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

 

Символ Интерпретация
  Категория: escape-последовательности
\b При использовании его в квадратных скобках соответствует символу "обратная косая черта" с кодом - \u0008
\t Соответствует символу табуляции \u0009
\r Соответствует символу возврата каретки \u000D
\n Соответствует символу новой строки \u000A
\e Соответствует символу escape \u001B
\040 Соответствует символу ASCII, заданному кодом до трех цифр в восьмеричной системе
\x20 Соответствует символу ASCII, заданному кодом из двух цифр в шестнадцатиричной системе
\u0020 Соответствует символу Unicode, заданному кодом из четырех цифр в шестнадцатиричной системе
  Категория: подмножества (классы) символов
. Соответствует любому символу, за исключением символа конца строки
[aeiou] Соответствует любому символу из множества, заданного в квадратных скобках
[^aeiou] Отрицание. Соответствует любому символу, за исключением символов, заданных в квадратных скобках
[0-9a-fA-F] Задание диапазона символов, упорядоченных по коду. Так, 0-9 задает любую цифру
\p{name} Соответствует любому символу, заданному множеству с именем name, например, имя Ll задает множество букв латиницы в нижнем регистре. Поскольку все символы разбиты на подмножества, задаваемые категорией Unicode, то в качестве имени можно задавать имя категории
\P{name} Отрицание. Большая буква всегда задает отрицание множества, заданного малой буквой
\w Множество символов, используемых при задании идентификаторов - большие и малые символы латиницы, цифры и знак подчеркивания
\s Соответствует символам белого пробела
\d Соответствует любому символу из множества цифр
  Категория: Операции (модификаторы)
* Итерация. Задает ноль или более соответствий; например, \w* или (abc)*. Аналогично, {0,}
+ Положительная итерация. Задает одно или более соответствий; например, \w+ или (abc)+. Аналогично, {1,}
? Задает ноль или одно соответствие; например, \w? или (abc)?. Аналогично, {0,1}
{n} Задает в точности n соответствий; например, \w{2}
{n,} Задает, по меньшей мере, n соответствий; например, (abc){2,}
{n,m} Задает, по меньшей мере, n, но не более m соответствий; например, (abc){2,5}
  Категория: Группирование
(?<Name>) При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная группа, которой дается имя Name. Например, (?<tel> \d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel
() Круглые скобки разбивают регулярное выражение на группы. Для каждого подвыражения, заключенного в круглые скобки, создается группа, автоматически получающая номер. Номера следуют в обратном порядке, поэтому полному регулярному выражению соответствует группа с номером 0
(?imnsx) Включает или выключает в группе любую из пяти возможных опций. Для выключения опции перед ней ставится знак минус. Например, (?i-s: ) включает опцию i, задающую нечувствительность к регистру, и выключает опцию s - статус single-line



i- Поиск без учета регистра.

m - Многострочный режим, позволяющий находить совпадения в начале или конце строки, а не всего текста.

n- Находит только явно именованные или нумерованные группы в форме (?<name>...).

с - Компилирует. Генерирует промежуточный MSIL-код, перед исполнением превращающийся в машинный код.

s - Позволяет интерпретировать конец строки как обыкновенный символ-разделитель.

х- Исключает из образца неприкрытые незначащие символы (пробелы, табуляция и т.д.).

г- Ищет справа налево.

 

Квантификаторы, или умножители (Quantifiers)

Если неизвестно, сколько именно знаков должна содержать искомая подстрока, можно использовать спецсимволы, именуемые словом квантификаторы(quantifiers). Например, можно написать «hel+o», что будет означать слово, начинающееся с «he», со следующими за ним одним или несколькими «1», и заканчивающееся на «о». Следует понимать, что квантификатор относится к предшествующему выражению, а не к отдельному символу. Полный список квантификаторов:

 

* Соответствует 0 или более вхождений предшествующего выражения. Например, 'zo*' соответствует "z" и "zoo".

+ Соответствует 1 или более предшествующих выражений. Например, "zo+" соответствует "zo" и "zoo", но не "z".

? Соответствует 0 или 1 предшествующих выражений. Например, 'do(es)?' соответствует "do" в "do" или "does".

{n} n — неотрицательное целое. Соответствует точному количеству вхождений. Например, 'о{2}' не найдет "о" в "Bob", но найдет два "о" в "food".

{n,} n — неотрицательное целое. Соответствует вхождению, повторенному не менее n раз. Например, *о{2,}' не находит "о" в "Bob", зато находит все "о" в "foooood".

{n,m} n и m — неотрицательные целые числа, где n <= m. Соответствует минимум n и максимум m вхождений. Например, *о{1,3} находит три первые "о" в "fooooood". Пробел между запятой и цифрами недопустим.

 



<== предыдущая лекция | следующая лекция ==>
Основные методы | Атрибуты][модификаторы]enum имя_перечисления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.