Выбрать главу

11 g) работает точно также, как в случае REGEXP_INSTR().

120 Глава 4

Таблица 4.7. Функции с регулярными выражениями (окончание)

Функция_______________ Описание___________________________ _____________________

REGEXP_COUNT(x, шаб- Новая функция в Oracle 11 д. Ищет шаблон в х и возвращает колон

[, начало [, условия_ личество найденных вхождений шаблона в х. Дополнительно

совпадения]]) можно указать:

■ начало позиция, с которой нужно начинать поиск. По умолчанию

это 1, то есть первый символ х.

■ условия_совпадения чтобы изменить параметры совпадения,

используемые по умолчанию. Работает точно также, как показано

для REGEXP_LIKE().

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

R E G E X P _ L IK E ( )

Функция REGEXP_LIKE(x, шаблон [, условия_совпадения]) используется для

поиска в строке х регулярных выражений, заданных шаблоном шаблон.

Можно задать дополнительный параметр условия_совпадения, который

может принимать следующие значения:

■ 'с' - означает, что при поиске совпадений учитывается регистр (используется

по умолчанию),

■ 'Г - означает, что при поиске совпадений регистр не учитывается,

■ 'п' - означает, что можно использовать оператор совпадения с любым

символом,

■ 'т ' означает, что х трактуется как строка, состоящая из нескольких

строк.

В следующем примере с помощью функции REGEXP_LIKE() отбираются

покупатели, дата рождения которых находится в диапазоне от 1965 до

1968 года:

□ SELECT customer_id, first_name, last_name, dob

FROM customers

WHERE REGEXP_LIKE(TO_CHAR(dob, 1YYYY’), '“196(5-8]$’);

CUSTIOMER_ID FIRST_NAME LAST_NAME DOB

1 John Brown 01-JAN-65

2 Cynthia Green 05-FEB-68

В следующем примере производится выборка покупателей, имя которых

начинается с буквJ илиф Придаваемое функции REGEXP_LIKE() регулярное

выражение имеет вид Aj , а параметр условия_совпадения - значение 1,

что означает совпадение независимо от регистра, в котором набран проверяемый

символ, т.е. критерию совпадения будут удовлетворять стоящие

в начале строки символы J или j:

П SELECT customsr_id, first_name, last_name, dob

FROM customers

WHERE REGEXP_LIKE(first_name, '“j’, * i’):

Использование простых функций 121

CUSTIOMER_ID FIRST_NAME LAST_NAME DOB

1 John Brown 01-JAN-65

R E G E X P IN S T R ()

Функция REGEXP_INSTR(x, шаблон [, начало [, номер_вхождения [, усло-

вия_возврата [, условия_совпадения ] ] ] ] ) используется для поиска в х шаблона;

REGEXP_INSTR() возвращает позицию, в которой встречается указанный

при ее вызове шаблон. Позиции в строке нумеруются, начиная с 1.

В следующем примере с помощью функции REGEXP_INSTR() возвращается

позиция, удовлетворяющая регулярному выражению 1 [ [: alpha: ] ] { 4}:

□ SELECT

REGEXP_INSTR( ‘ But, soft! What light through yonder window breaks?’,

‘1[[:alpha:]]{4} ’) AS result

FROM dual;

RESULT

17

Обратите внимание, что возвращается число 17, соответствующее позиции

буквы 1 слова light в строке поиска.

В следующем примере с помощью функции REGEXP_INSTR() возвращается

позиция второго вхождения текста, соответствующего регулярному выражению

s[ [:alpha:] ] {3 }, если вести поиск с позиции 1 входной строки:

□ SELECT

REGEXP_INSTR(‘ But, soft! What light through yonder window softly

breaks?’,

‘ s[[:alpha:]]{3}') AS result

FROM dual;

RESULT

45

В следующем примере возвращается позиция второго вхождения буквы

о, если начать поиск с позиции 10 входной строки:

□ SELECT

REGEXP_INSTR(‘ But, soft! What light through yonder window breaks?’,

’o’, 10, 2) AS result

FROM dual;

RESULT

32

R E G E X P _ R E P L A C E ()

Функция REGEXP_REPLACE(x, шаблон [, строка_замены [, начало [,номер_

вхождения [, условия_совпадения ] ] ] ] ) используется для поиска вхождений

шаблона в строку х и заменяет их на строка_замены.

122 Глава 4

В следующем примере с помощью функции REGEXP_REPLACE() подстрока,

удовлетворяющая регулярному выражению l[[:a lp h a :]]{4 }, заменяется

строкой ‘sound’ :

□ SELECT REGEXP_REPLACE('But, soft! What light through yonder window

breaks?',

‘1[[:alpha:]]{4}', ‘sound’) AS result

FROM dual;

RESULT

But, s o ft ! What sound through yonder window breaks?

Обратите внимание: в выведенном тексте слово light заменено словом

sound.

R EG EX P _SU B S TR ()

Функция REGEXP_SUBSTR(x, шаблон [, начало [,номер_вхождения [,условия_

совпадения ] ] ] ) используется для получения подстроки строки х, соответствующей

шаблону, которая начинается с позиции, указанной параметром

начало. - -

В следующем примере с помощью функции REGEXP_SUBSTR() возвращается

подстрока, удовлетворяющая регулярному выражению l[[:a lph a :]]{4 }:

□ SELECT

REGEXP_SUBSTR(‘But, soft! What light through yonder window breaks?’,

‘ ICC:alpha:]]{4}', ‘sound’) AS result

FROM dual;

RESUL

lig h t

R E G E X P _C O U N T ()