Oracle、Mysql REGEXP_LIKE正则表达式用法

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Oracle、Mysql REGEXP_LIKE正则表达式用法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.情景展示

oracle和mysql关于正则表达式和对应的函数都一样。

正则表达式符号介绍:

'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。
'.' 匹配除换行符之外的任何单字符。
'?' 匹配前面的子表达式零次或一次。
'+' 匹配前面的子表达式一次或多次。
'*' 匹配前面的子表达式零次或多次。
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
'( )' 标记一个子表达式的开始和结束位置。
'[]' 标记一个中括号表达式。
'{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。
num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
字符簇: 
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

各种操作符的运算优先级:转义符(), (?:), (?=), [] 圆括号和方括号*, +, ?, {n}, {n,}, {n,m} 限定符^, $, anymetacharacter 位置和顺序| */

2.REGEXP_LIKE()

与LIKE的功能相似,区别在于:可以使用正则表达式;

基本用法:

-- 查询THEMECODE字段值包含36的记录
select * from meta_theme where regexp_like(THEMECODE,'36');

相当于:

select * from meta_theme where THEMECODE like '%36%';

只包含数字0-9或小数点

regexp_like(str,'^[0-9.]+$')

只包含纯数字的四种实现方式

regexp_like(str,'^[0-9]+[0-9]$');
regexp_like(str,'^[0-9]+$');
regexp_like(str,'^[[:digit:]]+$');
not regexp_like(str,'[^0-9]');

'+' 匹配前面的子表达式一次或多次;

^表示排除。

不是纯数字0-9的两种实现方式

regexp_like(str,'[^0-9]');  -- ^表示排除
not regexp_like(str,'^[[:digit:]]+$');

只包含0-9和-字符的两种实现方式

regexp_like(str,'[0-9-]');
regexp_like(str,'^[0-9]|[-]$');

'|' 指明两项之间的一个选择,相当于or。

只包含0-9,-字符, 或者空格的五种实现方式

regexp_like(str,'^[0-9]|[-]$') or regexp_like(str,'^[ ]$');
regexp_like(str,'^[0-9]|[-]$|^[ ]$');  
regexp_like(str,'(^[0-9]|[-]$)|(^[ ]$)');
regexp_like(str,'^[0-9]|[-]|[ ]$');
regexp_like(str,'[0-9- ]');

 

3.REGEXP_INSTR()

与INSTR()的功能相似,区别在于:可以使用正则表达式;

 

4.REGEXP_SUBSTR()

与SUBSTR()的功能相似,区别在于:可以使用正则表达式;

 

5.REGEXP_REPLACE()

与REPLACE()的功能相似,区别在于:可以使用正则表达式;

可以利用正则表达式,替换或者提取字段内容。

-- 替换
select regexp_replace('hjbfgcoqwue8723r8fhescb938r','[^0-9]','-');
-- 提取
select regexp_replace('hjbfgcoqwue8723r8fhescb938r','[^0-9]','') from dual;

Oracle、Mysql REGEXP_LIKE正则表达式用法

6.常用正则表达式

匹配数字

^[1-9]d*$    -- 匹配正整数
^-[1-9]d*$  -- 匹配负整数
^-?[1-9]d*$  -- 匹配整数
^[1-9]d*|0$  -- 匹配非负整数(正整数 + 0)
^-[1-9]d*|0$  -- 匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$  -- 匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  -- 匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  -- 匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$  -- 匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ -- 匹配非正浮点数(负浮点数 + 0)

匹配字符

^[A-Za-z]+$ -- 匹配由26个英文字母组成的字符串
^[A-Z]+$ -- 匹配由26个英文字母的大写组成的字符串
^[a-z]+$ -- 匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ -- 匹配由数字和26个英文字母组成的字符串
^w+$ -- 匹配由数字、26个英文字母或者下划线组成的字符串

十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/电子邮箱:/^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/URL:/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/HTML 标签:/^<([a-z]+)([^<]+)*(?:>(.*)</1>|s+/>)$/Unicode编码中的汉字范围:/^[u4e00-u9fa5],{0,}$/匹配中文字符的正则表达式: [u4e00-u9fa5]匹配空白行的正则表达式:ns*r匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />说明:上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力匹配首尾空白字符的正则表达式:^s*|s*$说明:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*说明:表单验证时很实用匹配网址URL的正则表达式:[a-zA-z]+://[^s]*匹配国内电话号码:d{3}-d{8}|d{4}-d{7}说明:匹配形式如 0511-4405222 或 021-87888822匹配腾讯QQ号:[1-9][0-9]{4,}说明:腾讯QQ号从10000开始匹配中国大陆邮政编码:[1-9]d{5}(?!d)说明:中国大陆邮政编码为6位数字匹配身份证:d{15}|d{18}匹配ip地址:d+.d+.d+.d+ 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

  • 个人主页
  • oracle 常用函数

脚本宝典总结

以上是脚本宝典为你收集整理的Oracle、Mysql REGEXP_LIKE正则表达式用法全部内容,希望文章能够帮你解决Oracle、Mysql REGEXP_LIKE正则表达式用法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: