l        方括号表达示
| 
 方括号表达式  | 
 描述  | 
| 
 [[:alnum:]]  | 
 字母和数字混合的字符  | 
| 
 [[:alpha:]]  | 
 字母字符  | 
| 
 [[:cntrl:]]  | 
 控制字符  | 
| 
 [[:digit:]]  | 
 数字字符  | 
| 
 [[:graph:]]  | 
 图像字符  | 
| 
 [[:lower:]]  | 
 小写字母字符  | 
| 
 [[:print:]]  | 
 打印字符  | 
| 
 [[:punct:]]  | 
 标点符号字符  | 
| 
 [[:space:]]  | 
 空格字符  | 
| 
 [[:upper:]]  | 
 大写字母字符  | 
| 
 [[:xdigit:]]  | 
 十六进制数字字符  | 
 
 
l        元字符
| 
 元字符  | 
 描述  | 
| 
 *?  | 
 如果有前面字符串的0次以上出现时匹配  | 
| 
 +?  | 
 如果有前面字符串的1次以上出现时匹配  | 
| 
 {m}  | 
 m是整数。它文本中找出给定子表达式的恰好m次出现  | 
| 
 {n}?  | 
 前面的字符串只出现一次时匹配  | 
| 
 {m,}  | 
 M是整数。它在文本中找出给定子表达示的至少m次出现  | 
| 
 {n,}?  | 
 匹配前面的字符串至少n次  | 
| 
 {m,n}  | 
 M和n是整数。它在文本中找出给定子表达示的m到n次出现  | 
| 
 {n,m}  | 
 匹配前面的字符串至少到n次,但不多于m次  | 
| 
 c  | 
 查询操作区分大小写  | 
| 
 i  | 
 查询操作不区分大水写  | 
| 
 m  | 
 多行字符串上的查询,在源字符串包含多行时,该查询允许用(^)模式匹配字符串的开始  | 
| 
 n  | 
 通常匹配单个字符,也可以匹配新行  | 
| 
 x  | 
 需要忽略正则表达示中的空格字符时,使用参数‘X’  | 
| 
 \A  | 
 匹配字符串首,而不是行首,因而多行字符串不能匹配每一行  | 
| 
 \d  | 
 匹配任意数字字符  | 
| 
 \D  | 
 匹配任意非数字字符  | 
| 
 \s  | 
 匹配任意空格字符  | 
| 
 \S  | 
 匹配任意非空格字符  | 
| 
 \w  | 
 匹配任意字符和数字。该字符和[:alnum:]之间的不同是\w包括下划线字符  | 
| 
 \W  | 
 匹配任意非空字符串  | 
| 
 *  | 
 通配符。找出在文本中包含0或多次给定子表达式出现的记录  | 
| 
 +  | 
 找出在文本中包含1或多次给定子表达式出现的记录  | 
| 
 ?  | 
 找出在文本中包含0次或1次给定子表达示出现的记录  | 
| 
 .  | 
 匹配文本中的任意字符  | 
| 
  ^  | 
 锚。如果该字符后的表达式出现在行首,则匹配成功  | 
| 
 $  | 
 锚。如果该字符后的表达式出现在行首,则匹配成功  | 
| 
 |  | 
 分隔符,使用方法和OR相同  | 
| 
 (….)  | 
 分组子表达式  | 
 
 
l        正则表达式运算符和函数
 
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@plsqlbook.com', '[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||
 2        '([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]]{2,})') REGEXP_SUBSTR
 3   from dual;
 
REGEXP_SUBSTR
----------------------
feedback@plsqlbook.com
 
 
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
转载自:http://space.itpub.net/20948385/viewspace-665735