oracle 正则表达式

oracle从10g开始支持的正则表达式确实展现了其威力。从10g到现在,已经过去这么多年了,居然在网上找不到合适的标准语句,还是自己录下吧。

下表所列的都是经过测试的正确语法:

(原文链接 http://ddbiz.com/?p=205)

1. 匹配 邮件地址 email:

 

[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)*@[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)?/.[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)*

 

之所以用 [0-9a-zA-Z_] 而不用 /w, 是因为 /w 在SQL中也匹配了中文字符,比如如下语句中:

 

 

SQL>select regexp_substr('钱可通神suvi@askac.net主页', '[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)*@[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)?/.[0-9a-zA-Z_]+([-.][0-9a-zA-Z_]+)*') email

           from dual;

 

EMAIL
------------------------------------
suvi@askac.net

 

而用 /w 则包含了汉字

SQL> select regexp_substr('钱可通神suvi@askac.net主页', '/w+([-.]/w+)*@/w+([-.]/w+)?/./w+([-.]/w+)*') email

           from dual;

 

EMAIL
------------------------------------
钱可通神suvi@askac.net主页

 

2. 陆续更新

(原文链接 http://ddbiz.com/?p=205)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值