正则表达式(运行环境:pg数据库测试)

\d  指匹配0-9中任意一个数字
\D  指匹配除了0-9中任意一个字符
select regexp_match('zhongguo1023','\d') 匹配结果:1
select regexp_match('zhongguo1023','\D') 匹配结果:z

\w  指匹配0-9,a-z,A-Z中任意一个字符
\W  指匹配除了0-9,a-z,A-Z中任意一个字符
select regexp_match('zhongguo1023','\w') 匹配结果:z
select regexp_match('zhongguo1023#','\W') 匹配结果:#

\s  指匹配空白符
\S  指匹配除了空白符
select regexp_match('zhongguo1023 ','\s') 匹配结果:空格
select regexp_match('zhongguo1023#','\S') 匹配结果:z


匹配多个字符,有2种写法,一种是+,另外一种是{}
匹配1023数字
select regexp_match('zhongguo1023','\d+') 匹配结果:1023
select regexp_match('zhongguo1023','\d{4}') 匹配结果:1023 ,{4}代表的意思是匹配4个数字,{2,3}代表的意思是匹配2或3个数字

[]的用法
select regexp_match('zhongguo1023','[0-9a-z]') 匹配结果:z ,[0-9a-z]代表的意思是匹配0-9,a-z中任意一个字符
select regexp_match('zhongguo1023','[0-9a-z]+') 匹配结果:zhongguo1023 ,[0-9a-z]+代表的意思是匹配至少一个0-9,a-z中的字符

^和$的用法
匹配除了1023数字的所有字符
select regexp_match('zhongguo1023','[^\d]+') 匹配结果:zhongguo
匹配除了zhongguo数字的所有字符
select regexp_match('zhongguo1023','[^zhongguo]+') 匹配结果:1023
匹配以英文字母开头的所有字符串
select regexp_match('zhongguo1023','^[a-zA-Z]+') 匹配结果:zhongguo
匹配以数字结尾的所有字符串
select regexp_match('zhongguo1023','\d+$') 匹配结果:1023
select regexp_match('zhongguo1023','[\d]+$') 匹配结果:1023
select regexp_match('zhongguo1023','[0-9]+$') 匹配结果:1023
匹配以数字开头并且以数字结尾的字符串
select regexp_match('2022','^[0-9]+$') 匹配结果:2022
注意^放在[]里面代表非,放在外面代表以什么开头

()的用法
例如把字符串"20220711"变成"2022年07月11号"
select regexp_replace('20220711','(\d{4})(\d{2})(\d{2})','\1年\2月\3号','g') 匹配结果: 2022年07月11号 ,()的意思代表第几部分,\1表示取第一部分

贪婪模式与非贪婪模式
贪婪模式:尽可能的匹配最长字符串,表达式是.*
非贪婪模式(也叫懒惰模式):尽可能的匹配最短字符串,表达式是.*?和.+?

有一个字符串"abcdefg123abc456abc"匹配以a开头并且以a结尾的字符串
.*的用法
select regexp_match('abcdefg123abc456abc','a.*a') 匹配结果:abcdefg123abc456a ,它匹配到了最后一个a就结束了
.*?的用法
select regexp_match('abcdefg123abc456abc','a.*?a') 匹配结果:abcdefg123a ,它匹配到了第二个a就结束了
.+?的用法
select regexp_match('abcdefg123abc456abc','a.+?a') 匹配结果:abcdefg123a ,它匹配到了第二个a就结束了
注意.*?与.+?区别在于:前者的*是指匹配0个或0个以上的字符串,后者匹配一个或者一个以上的字符串

.表是匹配一个字符
.+或者.*匹配多个字符


匹配cs后面的123
select regexp_match('ffcs123456 abcd123def','(?<=cs)123')  结果:123
匹配前面不是cs的数字123
select regexp_match('ffcs123456 abcd123def','(?<!cs)123')  结果:123


匹配abc前面的123
select regexp_match('ffff123abc abcd123def','123(?=abc)') 结果:123
匹配后面接的不是ss的数字123
select regexp_match('ffff123ss abcd123def','123(?!ss)') 结果:123

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值