regul.ppt
- Количество слайдов: 13
Регулярные выражения в pl/sql
Регулярные выражения Это язык описания текстовых шаблонов (так же называемых образцами и масками). Текстовые шаблоны используются: § Для проверки соответствия некоторого текста шаблону. § Для поиска текста, соответствующего данному шаблону. § Для замены текста, соответствующего данному шаблону, другим текстом.
Регулярные выражения Простейший пример использования регулярного выражения: § SELECT * § FROM EMPLOYEE § WHERE NAME LIKE `%VASYA%` Регулярному выражению ‘%VASYA%’ соответствуют строки: § ‘VASYA`, § `TRATATAVASYA` § `22 VASYA 77` и т. д.
Синтаксис регулярных выражений Регулярное выражение состоит из символов и метасимволов. В самом простом виде регулярное выражение состоит только из символов. Регулярному выражению ‘вася’ соответсвуют строки: § ‘котвася’; § ‘васячеловек’; § ‘замучилвасякота’.
Синтаксис регулярных выражений Метасимволы в регулярных выражениях используются для описания других символов. Например, метасимвол `. ` в регулярном выражении соответствует любому символу (кроме символа перехода на новую строку) Регулярному выражению `a. b` соответствуют строки `asb`, `wafbl`, `aa. Pbb` и др. Если требуется, чтобы строка начиналась и заканчивалась определенными символами, то используются символы привязки к началу и концу строки - `^` и `$`. Так шаблону `^a. b$` соответствуют строки `a. Gb`, `a. Sb`, но не соответствуют `fadb`, ’albg’
Синтаксис регулярных выражений. Операторы повтора. Чтобы указать, что строка должна содержать несколько одинаковых символов или комбинаций символов, используются операторы повтора. Например, оператор `*` говорит, что комбинация символов должна повторяться 0 или более раз. Так шаблону `v(asy)*a` соответствуют строки ‘va’, ‘vasya’, vasyasya, `manva` и т. д
Синтаксис регулярных выражений. Операторы повтора. Оператор Описание повтора * Встречается 0 и более раз ? Встречается 0 или 1 раз + Встречается 1 и более раз {m} Встречается ровно m раз {m, } Встречается по крайней мере m раз {m, n} Встречается по крайней мере m раз, но не более n раз
Синтаксис регулярных выражений. Списки символов. Используют тогда, когда необходимо указать, что строка должна содержать элементы из определенного списка. Синтаксис: `[символы]`. Например, шаблону `a[bcd]e` соответствуют строки `abe`, `ace`, `ade`, но не соответствуют `ae` или `abce`. В списках можно задать диапазон символов: например, шаблону ‘a[b-m]d’ соответствуют строки `add` и `amd`. Для того, чтобы указать, что строка не должна содержать элементы из данного списка, используют символ `^`. Например, шаблону `a[^abc]n` соответствуют строки ‘akn’ или ‘a 7 n’.
Синтаксис регулярных выражений. Списки символов. В списках могут использоваться символы из POSIX класса Класс символов Описание [: alpha: ] Буквы [: lower: ] Буквы в нижнем регистре [: upper: ] Буквы в верхнем регистре [: digit: ] Цифры [: alnum: ] Буквы и цифры [: space: ] Пробелы (не печатаемые символы), такие как перевод каретки, новая строка, вертикальная табуляция и подача страницы [: punct: ] Знаки препинания [: cntrl: ] Управляющие символы (не печатаемые) [: print: ] Печатаемые символы
Пример использования символов POSIX класса Составить регулярно выражение, которому соответствуют строки, начинающиеся на две буквы в верхнем и две буквы в нижнем регистре. ^[[: upper: ]]{2}[[: lower: ]]{2} Данному шаблону соответствуют строки § `ВАся`, § `ВАся. Ест. Квасю`, § `ВАсилий`и др.
Функции для работы с регулярным выражениями. Regexp_like. Проверяет, соответствует ли строка некоторому регулярному выражению bool regexp_like(`строка’, `регулярное выражение`) Пример: получить список работников, чьи имена начинаются на заглавную букву `Г`, а заканчиваются на `адя` § select * § from employee § where regexp_like(name, `^Г[[: alpha]]*адя$`)
Функции для работы с регулярным выражениями. Regexp_substr. Возвращает часть строки, соответствующую заданному регулярному выражению varchar 2 regexp_substr(‘исходная строка’, ‘регулярное выражение’) Пример: необходимо получить первую букву в имени некоторого сотрудника § select regexp_substr(name, ’^[[: alpha]]$’) first_word § from employee § where id=777
Функции для работы с регулярным выражениями. Regexp_replace. Находит в строке подстроку, соответствующую определенному регулярному выражению, и заменяет ее на другую подстроку. varchar 2 regexp_replace(‘исходная строка’, ’регулярное выражение ’, ’подстрока замены’) Пример: имеется строка `vasya`. Необходимо получить строку без лишних пробелов § select regexp_replace(`vasya § from dual vasya`, `( ){2, }`, ` `)