当前位置:文档之家› Oracle正则表达式的用法

Oracle正则表达式的用法

正则表达式运算符和函数
a)REGEXP_SUBSTR
REGEXP_SUBSTR为指定字符串的一部分与正则表达式建立匹配。

语法如下:
REGEXP_SUBSTR(source_string,
pattern,
start_position,
occurrence,
match_parameter)
其中source_string是必须的。

可以是带引号的字符串或者变量。

Pattern是用单引号引用的与正则表达式。

Start_position指定了在字符串中的准确位置,默认值为1。

Occurrence是一个选项,指定在源字符串匹配过程中相对其他字符串,哪个字符串应该匹配。

最后,match_parameter 也是一个选项,指定在匹配时是否区分大水写。

示例1:
SQL> select regexp_substr('The zip code 80831 is for falcon, co','[[:digit:]]{5}' ) REGEXP_SUBSTR from dual;
REGEXP_SUBSTR
-------------
80831
示例2:
SQL> select regexp_substr('The zip code 80831 is for falcon, co', '[[:alpha:]]{3,}', 1, 3) REGEXP_SUBSTR from dual;
REGEXP_SUBSTR
-------------
code
示例3
SQL> select regexp_substr('comments or questions - email
feedback@',
'[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||
2 '([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]]{2,})')
REGEXP_SUBSTR
3 from dual;
REGEXP_SUBSTR
----------------------
feedback@
b)REGEXP_INSTR
REGEXP_INSTR返回与正则表达式匹配的字符和字符串的位置。


SQL> select regexp_instr('The zip code 80831 is for falcon, co', '[[:digit:]]{5}') REGEXP_INSTR from dual;
REGEXP_INSTR
------------
14
c)REGEXP_REPLACE
REGEXP_REPLACE与REPLACE函数类似,提供一种修改与所给正则表达式匹配的字符串的方法。

作用包括纠正拼写错误、格式化输入输出的文本。

如电话号码的格式为:719-111-1111。

使用REGEX_REPLACER的返回值是:
SQL> select regexp_replace('Reformat the phone number 719-111-1111 ...',
2 '[1]?[-.]?(\(?[[:digit:]]{3}\)?)+[- .]?'
3 || '([[:digit:]]{3})[- .]?([[:digit:]]{4})',
4 ' (\1) \2-\3') regexp_replace
5 from dual;
REGEXP_REPLACE
---------------------------------------------
Reformat the phone number (719) 111-1111 ...
S
d)REGEXP_LIKE
REGEXP_LIKE运算符与LIKE运算符相似,但是功能更强大,因为它支持使用与此正则表达式与文本进行匹配。

语法如下:
REGEXP_LIKE(source_string, pattern, match_parameter)
Source_string可以是文字字符串,如果前面例中的字符串,也可以是包含某些字符串的变量或列。

Pattern是要进行匹配的正则表达式。

Match_parameter用于指定在匹配时是否区分大小写。

SQL> select ename, job
2 from emp
3 where regexp_like(job, '(clerk|analyst)', 'i');
ENAME JOB
---------- ---------
SMITH CLERK SCOTT ANALYST ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK。

相关主题