- •Вопросы к экзамену по БиБд:
- •Ответы к вопросам:
- •Технология "клиент-сервер"
- •Параметры
- •Возвращаемое значение
- •Реализации
- •Регулярные выражения
- •Синтаксис
- •Спецсимволы
- •Расширенные спецсимволы
- •Операторы
- •Расширенные операторы
- •Er-модель данных
- •История создания[править]
- •Нотации[править]
- •Нотация Питера Чена[править]
- •Crow's Foot[править]
- •6.2.2. Основные понятия модели Entity-Relationship (Сущность-Связи)
- •6.2.3. Нормальные формы er-схем
- •11.5. Проектирование базы данных с помощью метода er-моделирования
- •11.5. Проектирование базы данных с помощью метода er-моделирования
- •4.4 Хранимые процедуры
Регулярные выражения
Регулярные выражения ("регэкспы", от англ. Regular Expressions) - мощное средство составления шаблонов, с помощью которых в заданном тексте может проводиться поиск и сопоставление символов любой сложности.
Как составляется такой шаблон? Для этого используются специальные символы, метасимволы и классы (наборы) символов. Регулярное выражение - это простая строка и любые символы в этой строке, которые не являются специальными (зарезервированными), считаются обычными символами.
Служебные символы делятся на три класса:
первый означает какой-либо класс (набор) символов (к примеру \w означает любую букву)
второй в отличии от первого не имеет длины (например ^ - начало строки, \b - начало слова)
третий класс - это операторы. Операторы применяются к метасимволам, к обычным символам или к другим операторам.
Любое выражение можно сгруппировать (заключить в скобки) и применить оператор ко всей группе.
Синтаксис регулярных выражений, использующийся в nnBackup, совпадает с синтаксисом регулярных выражений языка Perl. Небольшие отличия есть только в некоторых расширенных специфических операторах.
Синтаксис
Спецсимволы
Расширенные спецсимволы
Операторы
Расширенные операторы
Синтаксис
Все регэкспы должны заключаться в прямые слэши (/.../). После конечного слэша могут идти параметры:
/.../i |
- не различать регистр. |
/.../x |
- игнорировать пробелы и переводы строк (для удобства). |
/.../s |
- считать регэксп одной единственной строкой (трактовать спецсимвол . (точка) как "любой символ, в том числе и символ перевода строки"). |
Примеры:
\ совпадет только со словом 'Valery'
/Valery/
\ совпадет со словами 'VALERY', 'valery', 'Valery' и т. д.
/Valery/i
\ совпадет с 'foobar', 'foobar barfoo'
/foobar/
\ совпадет с 'foobar', 'FOOBAR', 'foobar and two other foos'
/ FOO bar /ix
\ совпадет с 'Valery%crlf%Kondakoff'
/Valery.*Kondakoff/s
Каждый символ регулярного выражения последовательно сравнивается с проверяемой строкой. Все, что не является указанными ниже спецсимволами или операторами, воспринимается, как обычный символ, рассматриваемый на простое совпадение.
Спецсимволы
^ |
Начало строки |
$ |
Конец строки |
. |
Любой символ кроме переводов строки (без параметра /.../s) |
[ ... ] |
Любой из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [a-f] означает любую букву из числа a, b, c, d, e, f. |
[^ ... ] |
Ни один из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [^0-9]означает любой символы, кроме 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. |
\# |
Следующий за слэшем символ # (кроме a-z и 0-9). Например, \\ означает символ \, \. означает символ . (точка), \$ означает символ $ и т. д. |
\b |
Начало слова |
\B |
Конец слова |
\xNN |
NN - шестнадцатеричный код ASCII-символа (\x20 - пробел, \x4A - J, \x6A - j и т. д.) |
\n |
0x10 (lf) |
\r |
0x13 (cr) |
\t |
0x09 (tab) |
\s |
Пробел (tab/space/cr/lf) |
\S |
Не пробел |
\w |
Символ слова (буквы, цифры, _) |
\W |
Символ не-слова |
\d |
Число |
\D |
Не число |
\u |
Символ в верхнем регистре |
\l |
В нижнем |
Примеры:
\ совпадает со словом 'help' с точкой
/help\./
\ совпадает со словами 'cats', 'cars' и т. д.
/ca.s/
\ совпадает со словами 'testing', 'tester', но не 'the test'
/^test/
\ совпадает с выражением 'see me', но не с 'meter' или 'me and you'
/me$/
\ совпадает с одной (латинской) гласной буквой
/[aeiou]/
\ совпадает с одной буквой или цифрой
/[a-z0-9]/ \ совпадает с 'footer', 'footing', 'a foot', но не с 'afoot'
/\bfoot/
\ совпадает с 'afoot', 'foot.' (точка не считается частью слова)
\ не совпадает с 'footing'
/foot\B/
\ совпадает со словом 'foot' целиком
/\bfoot\B/
\ совпадает со словами 'q2w', 'r5t' и т. д.
/\D\d\D/