Oracle 数据库/正则表达式支持
外观
	
	
| 类 | 表达式 | 描述 | 
|---|---|---|
| 锚定字符 | ^ | 行首 | 
| $ | 行尾 | |
| 量词字符 | * | 匹配 0 次或多次 | 
| + | 匹配 1 次或多次 | |
| ? | 匹配 0 次或 1 次 | |
| {m} | 精确匹配 m 次 | |
| {m,} | 至少匹配 m 次 | |
| {m, n} | 至少匹配 m 次,但不超过 n 次 | |
| \n | 导致前面的表达式重复 n 次 | |
| 选择和分组 | | | 分隔选择项,通常与分组运算符 () 一起使用 | 
| ( ) | 将子表达式分组为一个单元,用于选择、量词或反向引用(参见“反向引用”部分) | |
| [char] | 表示一个字符列表;字符列表中的大多数元字符被理解为字面量,但字符类、^ 和 - 元字符除外 | |
| POSIX 字符 | [:alnum:] | 字母数字字符 | 
| [:alpha:] | 字母字符 | |
| [:blank:] | 空格字符 | |
| [:cntrl:] | 控制字符(非打印字符) | |
| [:digit:] | 数字 | |
| [:graph:] | 任何 [:punct:], [:upper:], [:lower:], 和 [:digit:] 字符 | |
| [:lower:] | 小写字母字符 | |
| [:print:] | 可打印字符 | |
| [:punct:] | 标点符号字符 | |
| [:space:] | 空格字符(非打印字符),例如回车符、换行符、垂直制表符和换页符 | |
| [:upper:] | 大写字母字符 | |
| [:xdigit:] | 十六进制字符 | |
| 等价类 | = = | 嵌入在方括号中的等价类,它匹配一个基本字母及其所有带重音的版本。例如,等价类 '[=a=]' 匹配 ä 和 â。 | 
| 匹配选项 | c | 区分大小写匹配 | 
| i | 不区分大小写匹配 | |
| m | 将源字符串视为多行,激活锚字符 | |
| n | 允许句点 (.) 匹配任何换行符 | |
| x | 忽略空白字符 | 
REGEXP_LIKE 执行复杂的正则表达式模式匹配,并支持比 LIKE 更广泛的字符串模式范围。此函数在 10g 中引入。
姓以 T 开头,第二个字符是 'o' 或 'u'
SELECT last_name
FROM   hr.employees
WHERE  REGEXP_LIKE(last_name, '^T[ou]');
姓以 'T' 开头,以 'r' 结尾
select last_name
from   hr.employees
where  REGEXP_LIKE( last_name, '^T.*r$' );
名字是 'Steven' 或 'Stephen'
SELECT first_name
FROM hr.employees
WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$');
姓包含双元音字符(例如,'aa'、'ee'、'ii'、'oo'、'uu'),匹配不区分大小写
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i');
REGEXP_INSTR 执行复杂的正则表达式模式匹配,并支持比 INSTR 更广泛的字符串模式范围。此函数在 10g 中引入。
显示第一个小写元音字符的位置
SELECT last_name, REGEXP_INSTR(last_name, '[aeiou]')
FROM   hr.employees;
REGEXP_SUBSTR 执行复杂的正则表达式模式匹配,并支持比 SUBSTR 更广泛的字符串模式范围。此函数在 10g 中引入。
如果姓以 'A' 或 'C' 开头,则提取第一个字符
SELECT last_name, REGEXP_SUBSTR(last_name, '^[AC]')
FROM   hr.employees;
从第 3 个位置开始,从姓中提取 2 个字符
SELECT last_name, REGEXP_SUBSTR(last_name, '..',3)
FROM   hr.employees;
REGEXP_COUNT 对值执行计数,它与聚合函数 COUNT 不同。此函数在 11g 中引入。
在姓中查找元音模式的出现次数
SELECT last_name, REGEXP_COUNT( last_name, '[aeiou]' )
FROM   hr.employees;