REGEXP_LIKE·模式匹配

 
功能:检查字符串是否匹配正则表达式模式


查找名字以元音字母开头的员工

 
SELECT first_name 
FROM employees 
WHERE REGEXP_LIKE(first_name, '^[AEIOU]', 'i');

 
^ 表示字符串开头
[AEIOU] 匹配任意大写元音字母
'i' 表示不区分大小写
    

验证邮箱格式

 
SELECT email 
FROM employees 
WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');

 

    

 

    

 


 

  

 


REGEXP_INSTR·返回匹配位置

 
功能:返回匹配子字符串的起始位置

示例 1:查找电话号码中第一个区号的位置

 
SELECT phone_number, 
    REGEXP_INSTR(phone_number, '\(\d{3}\)') as area_code_pos
FROM employees;
    

 
SELECT REGEXP_INSTR('(123) 456-7890','\(\d{3}\)') as area_code_pos FROM dual;   

1
    

示例 2:查找第二个数字序列的位置

 
SELECT 'Order123Item456' as text,
    REGEXP_INSTR('Order123Item456', '\d+', 1, 2) as second_num_pos
FROM dual;
    
13

 
\d+ 匹配一个或多个连续的数字
1 从第 1 个字符开始搜索
2 查找第 2 次出现的位置
    

 

    

 

    

 


 

  

 


REGEXP_SUBSTR·提取子字符串

 
功能:提取匹配正则表达式的子字符串
    

 
SELECT REGEXP_SUBSTR('订单号:12345,金额:678.90元', '\d+(\.\d+)?') as amount
FROM dual;

\d+ 匹配一个或多个数字
(\.\d+)? 可选的小数部分
    
12345

 
SELECT REGEXP_SUBSTR('订单号:12345,金额:678.90元', '\d+(\.\d+)?',1,2) as amount
FROM dual;

678.90
    

 
SELECT REGEXP_SUBSTR('https://www.oracle.com/database', '//([^/]+)', 1, 1, '', 1) as domain
FROM dual;

参数说明:
源字符串:'https://www.oracle.com/database'

这是要搜索的原始字符串


正则表达式模式:'//([^/]+)'

//:匹配两个斜杠

([^/]+):捕获组,匹配一个或多个不是斜杠(/)的字符

整个模式会匹配从//开始到下一个/之前的所有内容

开始位置:1
表示从源字符串的第一个字符开始搜索

出现次数:1
表示返回第一次匹配的结果

匹配修饰符:''
空字符串表示不使用任何特殊匹配选项
可能的选项包括:'i'(不区分大小写), 'c'(区分大小写), 'n'(允许点号匹配换行符)等

子表达式索引:1
表示返回第一个捕获组的内容(即括号内的部分)
如果为0或省略,则返回整个匹配的字符串

    

 
执行结果:
这个函数会返回www.oracle.com,因为:

它找到//www.oracle.com的匹配

然后返回第一个捕获组([^/]+)的内容,即www.oracle.com

如果不使用子表达式索引(即参数设为0或省略),则会返回//www.oracle.com。
    

 

    

 


 

  

 


REGEXP_REPLACE·替换字符串

 
功能:用新文本替换匹配正则表达式的文本
    
SELECT REGEXP_REPLACE('信用卡号:1234-5678-9012-3456', '\d{4}-\d{2}', 'XXXX-XX') as masked_card
FROM dual;

信用卡号:XXXX-XX78-XXXX-XX56

 

    

 

    

 
SELECT REGEXP_REPLACE('20230515', '(\d{4})(\d{2})(\d{2})', '\1-\2-\3') as formatted_date
FROM dual;
    
2023-05-15

 


 


 


 

  

 


参考