sql中正则匹配/正则表达式的应用

正则表达式在开发过程中作用明显,灵活多变的匹配方式提供了处理复杂数据的可能性。

在正式使用前,要了解基本组成元素和语法结构,并了解如何拼凑和理解。

一、基本元素

元素释义示例
^匹配起始字符^a : 以a开头
$匹配结尾字符ab$:以ab结尾
.匹配单个字符a.c:a和c之间任意单个字符均可,如abc
*匹配任意个数在此之前的字符a*b:b前方出现任意次数的a均可,包括0次
+匹配至少1个在此之前的字符ab+:a后紧跟的b至少1次即可
[]

匹配[]方括号中任意单个字符

匹配[^]不在方括号中的内容

[ab]:存在a或b即可 ;[0-9]: 0到9任意数字

[^ab]:存在不是a或b的字符即可

{}

匹配{n} n个前面的字符

匹配{n,m} n-m个前面的字符

a{1} :a; a{2}:aa;包含即可

a{1,2}:a或aa;a{1,3}:a,aa,aaa;包含即可 

匹配前方字符,可有可无a?: a是否出现都可
()将元素组合(a+[0-9])? : 括号内a和任意数字组合出现皆可,但结合? 表示括号内内容可有可无

                                                                                      * 若有更好的解释或解释错误,请纠正我

二、示例

不同的开发语言环境,正则的关键字不一样。此处示例采用的为clickhouse,关键字为MATCH 函数用于在字符串中使用正则表达式进行匹配,语法是match(haystack, pattern)。如果是单纯的包含等操作可以用其他专门的语法类似like、position等替代,以下操作多为上述元素组合使用。

 1、匹配字符中是否包含数字

-- 是否包含任意数字
select match('test.adb', '[0-9]');  -- 返回0
select match('t1est.a9db', '[0-9]'); -- 返回1

2、是否所有字符都是数字

-- 匹配是否全部由数字组成
select match('1623234', '^[0-9]*$') --返回1
select match('1623234', '^[0-9]+$') --返回1

* 和 + 在此处的含义结合元素含义去理解,不解可以咨询我。

3、是否是数值

注意数值有整型和浮点型,同时也有正负。

select match('2.2', '^-?[0-9]+(\.[0-9])?$')  -- 返回1

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值