
- •Int main (int argv, char * argc[])
- •Int main (int argv, char * argc[]);
- •Void func1 ( a& a );
- •Void func2 ( a a );
- •Void swap (int a, int b)
- •Void swap (int &a, int &b)
- •Int Year;
- •Int Month;
- •Создание и уничтожение объектов в c#. Интерфейс iDisposable и освобождение ресурсов.
- •Int m_nYear;
- •Int m_nMonth;
- •Int m_nDay;
- •Inline int even(int X)
- •System.Collections.Generic.IEqualityComparer(Of t)
- •Public:
- •Virtual int GetHashCode()
- •Ассоциативные и последовательные контейнеры stl. Понятие итератора. Общие свойства контейнеров. Особенности и применение каждого из контейнеров.
- •// Do what you need with element using *I ;
- •Vint v1, v2(100);
- •Vint v3(v2.Begin(), --v2.End());
- •Sort(V.Begin(), V.End());
- •Setstr s, s2;
- •Использование контейнеров stl. Методы резервирования памяти контейнерами stl. Требования к элементам контейнеров.
- •C.Insert(s);
- •Обобщенные контейнеры .Net. Интерфейс iEnumerable и оператор foreach. Сравнение обобщенных контейнеров и ArrayList.
- •IEnumerable - интерфейс
- •Int m_nCount;
- •Int sprintf(buffer, format-string[, argument...]); char *buffer;
- •Язык регулярных выражений. Классы символов, исчислители, последовательности и несимвольные подстановки. Валидация email адреса при помощи регулярных выражений.
- •If (rx.IsMatch(testString))
- •Язык регулярных выражений. Классы символов, исчислители, альтернативы и подстановки. Применение регулярных выражений для изменения формата даты.
- •If (rx.IsMatch(testString))
- •Язык регулярных выражений. Классы символов, исчислители, альтернативы и последовательности. Выбор всех атрибутов href из html текста.
- •If (rx.IsMatch(testString))
- •Обработка исключений. Правила перехвата исключений. Назначение системы обработки исключений. Для чего система обработки исключений не предназначена.
- •Int operator / (cMyClass o, int I) {
- •Void main() {
- •Наследование, иерархии классов и обобщенная обработка данных. Чистый полиморфизм (полиморфизм виртуальных методов). Интерфейсы и абстрактные классы.
- •Int m_nCount;};
- •Int m_nCount;
- •Int m_nCount;
- •Int m_nCount;
- •Virtual string Iam(){return "furniture";}
- •Рекурсия. Рекуррентные структуры данных и рекурсивные алгоритмы. Алгоритм просмотра дерева каталогов файловой структуры.
- •Рекуррентное определение выражений. Алгоритм анализа и вычисления выражений (программа ”калькулятор”).
Язык регулярных выражений. Классы символов, исчислители, альтернативы и подстановки. Применение регулярных выражений для изменения формата даты.
Помимо довольно богатых методов работы со строками, в .Net реализованы и регулярные выражения. Это наиболее мощный инструмент разбора и манипулирования текстовыми данными.
Язык регулярных выражений предназначен для манипуляций с текстом. Он включает 2 основных видов символов – обычные символы и метасимволы. Именно метасимволы дают регулярным выражениям их мощь.
Метасимволы:
\ |
- считать следующий метасимвол как обычный символ. |
^ |
- начало строки |
. |
- один произвольный символ. Кроме '\n' - конец строки. |
$ |
- конец строки |
| |
- альтернатива (или) |
() |
- группировка |
[] |
- класс символов |
Например,
Regex rx = new Regex(@"^-?\d+(\.\d{2})?$");
такое регулярное выражение отвечает формату денежных величин. А такое (@"^\+?\d\(\d{3}\d{3}-\d{4}$" - номеру телефона.
Любую строку можно проверить на соответствие этим правилам.
If (rx.IsMatch(testString))
Регулярное выражение представляет собой образец, или шаблон, который сопоставляется со строкой. Это сопоставление, или поиск по шаблону, может закончиться успехом, или неудачей. Кроме того, совпадающий образец может быть заменен другой строкой или скопирован во внешнюю переменную.
Регулярные выражения применяют для:
а) поиска подстроки, удовлетворяющей шаблону регулярного выражения, в строке. б) поиска и замены подстроки, удовлетворяющей шаблону регулярного выражения, в строке.
в) проверки на соответствие заданной строки шаблону.
г) извлечения подстроки, удовлетворяющей шаблону регулярного выражения, из строки.
Правила регулярного выражения
Любой символ обозначает себя самого, если это не метасимвол. Если вам нужно отменить действие метасимвола, то поставьте перед ним '\'.
Строка символов обозначает строку этих символов.
Множество возможных символов (класс) заключается в квадратные скобки '[]', это значит, что в данном месте может стоять один из указанных в скобках символов.
Если первый символ в скобках это '^' - значит ни один из указанных символов не может стоять в данном месте выражения.
Внутри класса можно употреблять символ '-', обозначающий диапазон символов. Например, a-z - один из малых букв латинского алфавита, 0-9 - цифра и т.д.
Все символы, включая специальные, можно обозначать с помощью '\'.
Альтернативные последовательности разделяются символом '|' Заметьте что внутри квадратных скобок это обычный символ.
Внутри регулярного выражения можно указывать "подшаблоны" заключая их в круглые скобки и ссылаться на них как '\номер' Первая скобка обозначается как '\1'.
Вот сокращенная табличка ключевых метасимволов языка регулярных выражений:
Escape символы
Символы кроме: . $ ^ { [ ( | ) * + ? \ представляют самих себя, т.е. не являются метасимволами.
\n – соответствует концу строки
. – соответствует любому символу
\ - когда за ним следует один из метасимволов, соответствует этому символу, как обычному. Например, \* соответствует *.
\040 – соответствует символу с ASCII кодом 40 в десятеричном представлении
\x20 – соответствует символу с ASCII кодом 20 в шестнадцатеричном представлении
\u0020 – соответствует символу в Unicode в шестнадцатеричном представлении.
Несимвольные условия:
Наиболее употребительными из них являются 2 метасимвола:
^ - начало строки или ввода
$ - конец строки или ввода
Классы символов:
Класс символов описывает множество символов, которые принадлежат этому классу. Если символ во входном потоке входит в множество определяемое классом, то считается, что он отвечает регулярному выражению.
[..] – для описания класса символов, например,[aeiou] – гласные буквы, [0-9] цифры, можно перечислить знаки препинания и пр..
[^..] – описание исключения. Т.е. любые символы, кроме тех, что встречаются в квадратных скобках.
\n\t etc. Соответствует знаку новой линии, символу табуляции и т. д.
\ b Соответствует на границе слова
\В Соответствует внутри границ слова
\ d Соответствует цифре
\ D Соответствует не цифре
\ s Соответствует пробелу
\S Соответствует не пробелу
\ w Соответствует букве или цифре
\ W Соответствует символу, не являющемуся ни буквой, ни цифрой
Последовательности
(…) – определяет последовательность символов. Т.е. (abc) соответствует именно фрагменту abc, а не любой из этих букв. Последовательности автоматически нумеруются, в порядке открывающих скобок. Это часто используется в подстановках.
(?<name>) – задает имя последующему совпадению. Используется в подстановках.
(?!...) – соответствует отсутствию указанной последовательности.
Исчислители
Исчислители определяют требования к количеству элементов
{n} – повторение предыдущего элемента n раз
{n,} – повторение не менее n раз.
{n,m} – повторение не менее n, но не более m раз
? – соответствует {0,1}
+ - соответствует {1,}
* - соответствует {0,}
Альтернативы
| - соответствие любой из конструкций
Подстановки
$number – подставляет совпадение (последовательности) с номером number.
${name} – подставляет совпадение с именем name.
Пример
Regex re = new Regex(@"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b");
string s = re.Replace("12/17/2009", "${day}-${month}-${year}"); // Заменяет формат даты.
\w |
- алфавитно-цифровой или '_' символ |
\w+ |
- слово |
\W |
- не -//- |
\d+ |
- целое число |
\s |
- один пробел |
[+-]?\d+ |
- целое со знаком |
\S |
- один не пробел |
[+-]?\d+\.?\d* |
- число с точкой |
\d |
- одна цифр |
\w+ |
- слово |
\D |
- одна не цифра |
\d+ |
- целое число |