?

Log in

No account? Create an account
Гедеван Александовичь

0_falke_0


Когда у общества нет цветовой дифференциации штанов, то нет цели!


Категория: it

Регулярные выражения Oracle(REGEXP_)
Гедеван Александовичь
0_falke_0
Задолбался. Есть вещи которые используешь не часто, а потом когда приспичит начинаешь снова рыскать по сетки вспоминать.
Делаю, в первую очередь, для себя, ну и может кому пригодится.

--> REGEXP_LIKE (Используется как like в where)
REGEXP_LIKE(исходная_строка, шаблон[, параметр_сопоставления])
--> REGEXP_SUBSTR (возвращает подстроку, которая соответствует шаблону)
REGEXP_SUBSTR(исходная_строка, шаблон[, позиция [, вхождение [,параметр_сопоставления]]])
--> REGEXP_INSTR (возвращает позицию символа, от начала или конца, по шаблону)
REGEXP_INSTR(исходная_строка, шаблон[, начальная_позиция [, вхождение [, опция_возврата [, параметр_сопоставления ] ] ] ] )
--> REGEXP_REPLACE(возвращает измененную входную строку, по шаблону)
REGEXP_REPLACE(исходная_строка, шаблон [, строка_замены [, позиция[,вхождение, [параметр_сопоставления]]]])

Привязка:
^     Привязать выражение к началу строки.
$     Привязать выражение к концу строки.


Повторы:
*             Встречается 0 и более раз     REGEXP_REPLACE(str, ’11*’, ’1′)
?             Встречается 0 или 1 раз   
+             Встречается 1 и более раз     REGEXP_LIKE(str,’5+’)
{m}             Встречается ровно m раз     REGEXP_LIKE(str,’3{2}’)
{m,}     Встречается по крайней мере m раз   
{m, n}     Встречается по крайней мере m раз, но не более n раз

POSIX:
.     Любой символ
[:alpha:]     Буквы
[:lower:]     Буквы в нижнем регистре
[:upper:]     Буквы в верхнем регистре
[:digit:]     Цифры
[:alnum:]     Буквы и цифры
[:space:]     Пробелы (не печатаемые символы), такие как перевод каретки, новая строка, вертикальная табуляция и подача страницы
[:punct:]     Знаки препинания
[:cntrl:]     Управляющие символы (не печатаемые)
[:print:]     Печатаемые символы

Альтернатива и группировка :
|                   Альтернатива     Разделяет альтернативные варианты, часто используется с оператором группировки ()
( )                   Группа     Группирует подвыражения для альтернативы, квантификатора или ссылочности
[char]           Список символов     Обозначает список символов; большинство метасимволов в списке символов представляют собой литеры, за исключением символьных классов и метасимволов ^ и -
[^char]           Список символов     Список символов, которые не должны присутствовать в строке

Примеры использования.

REGEXP_SUBSTR (STRING,'[^/]+',1,1)
 SELECT rownum, trim(REGEXP_SUBSTR (  'AdfgBg 1; ABffS2 ; A444BS3 ; AB555S14','[^;]+',1,rownum)) a
 FROM dual
 connect by level <= 8
 and REGEXP_SUBSTR (  'AdfgBg 1; ABffS2 ; A444BS3 ; AB555S14','[^;]+',1,rownum) is not null ;

 SELECT
  REGEXP_SUBSTR( '123.4567...89', '[^.]+', 1, 3 ) AA --Не учитывает  NULL
, RTRIM( REGEXP_SUBSTR( '123.4567...89', '[^.]*(.|$)', 1, 5 ), '.' ) BB --Учитывает  NULL
FROM DUAL

REGEXP_LIKE(STRING, '^[0-9]{1}') Строка начинается с цифры (TRUE)
REGEXP_LIKE(STRING, '[0-9]${1}')  Строка заканчивается цифрой(TRUE)
REGEXP_LIKE(STRING, '[^[:digit:]]') Строка  содержит любой символ, не являющийся цифро

REGEXP_LIKE(email_adres, '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$') Проверка правильности формата записи электронного адреса.

REGEXP_REPLACE(STRING, '(.)','\1 ')
REGEXP_REPLACE(  '0234 5761744' ,'^(0)(\d{2,4})(\s*|-)(.*)','+49 (0)\2 \4') Переформатирует запись телефона.
 SELECT REGEXP_REPLACE(
 'Ellen Hildi Smith',
 '(.*) (.*) (.*)', '\3, \1 \2') --Перестонвка местами в строке.
 FROM dual;

Ссылка на хороший пример: http://www.interface.ru/home.asp?artId=19744
Метки: