正则表达式的使用

0.正则表达式中 .* 与 .*? 的区别

简单说是贪婪匹配与非贪婪匹配的区别。

比如说匹配输入串A: 101000000000100

使用 1.*1 将会匹配到1010000000001, 匹配方法: 先匹配至输入串A的最后, 然后向前匹配, 直到可以匹配到1, 称之为贪婪匹配。

使用 1.*?1 将会匹配到101, 匹配方法: 匹配下一个1之前的所有字符, 称之为非贪婪匹配。

1.数字结尾

aa_[0-9]{1,4}$
       匹配0-9的数字,出现1到4次,并且是数字结尾才能匹配
aa_[0-9]{1,4}
       匹配0-9的数字,出现1到4次
aa_[0-9]*
       匹配0-9的数字,0次、1次或多次

2.替换字符串中的特殊字符

将字符串中的括号替换掉

select REGEXP_REPLACE('(40.16000295057893,116.26745894551277)','[(|)]','');

select replace(replace(replace('[{"name":"ding","city":"shanghai"},{"name":"ding2","city":"shanghai2"}]','[',''),']',''),'},','}-'); --shanghai

select replace(regexp_replace('[{"name":"ding","city":"shanghai"},{"name":"ding2","city":"shanghai2"}]','[\\[|\\]]',''),'},','}-') --shanghai

//去除掉接口返回中的[],下面两种方法均可,注意一定要用两个反斜杠\\,否则就会有问题
REGEXP_REPLACE('\\[|\\]','')
REGEXP_REPLACE'(\\[|\\])','')

3.替换掉所有数字

select REGEXP_REPLACE('我们123213好','[0-9]*','');

4.找到文本中特殊字符

(1)在字符串"这是顾客小李订单为order_id=00001234的订单,其投诉衣服不漂亮"中找到 order_id=00001234

select REGEXP_EXTRACT('这是顾客小李订单为order_id=00001234的订单,其投诉衣服不漂亮',order_id=(\\d+),1)

(2)在字符串中过滤出数字

    比如"买10送1.5"
	select REGEXP_EXTRACT('买10送1.5','(\\d+)送',1)  --得到10
	select REGEXP_EXTRACT('买10送1.5','送(\\S+)',1)  --得到1.5
    比如"送买10送2.5'
	SELECT REGEXP_EXTRACT('送买10送2.5','(\\d+\\.\\d+|\\d+)',1); --返回10
	SELECT REGEXP_EXTRACT('送买10送2.5','(\\d+\\.\\d+|\\d+)$',1) ; --返回2.5

5.正则中引用group的值

会变着花样玩group,就会正则了

string regexp_replace(string source, string pattern, string replace_string[, bigint occurrence])

通过\1引用前面group的值

select REGEXP_REPLACE('买10送1.5;买12送2买15送5','送\\d+买','送\\1;买');

6.正则匹配日期

正则匹配日期

'(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)$'

7.正则匹配数字

正则表达式匹配5,6位数字 :

 \d{5,6}
\\d{5,6}

100.常用正则表达式

点击查看
正则表达式在线测试工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值