正则高级应用

案例:最近在使用notepad++做sql格式化,select*********from 之间的逗号后面的数据进行换行再加一个制表符,直接一个正则表达式搞定:,\s?(?=*?from)


SELECT biz_date,
	SUM(bigorder_add_consum_1m) 分子,
	SUM(bigorder_add_consum_cnt_1m) 分母
FROM table_bussion 
WHERE biz_date >= SUBDATE(CURDATE(),80) 
AND biz_date <= CURDATE()  
GROUP BY biz_date 
ORDER BY biz_date ;  

但是如果有多个sql的话,就会把where条件中的逗号也换行,原因是where后面的逗号在下一个sql的from前面

更新后的表达式: ,(?=((?!select).)*?from)

释义:

,(?=((?!select).)*?from)

  • ,匹配逗号
  • \s?匹配一个空格,可有可无
  • (?=...)向前断言,这个有点不太好理解,举例:   ..(?=llo)   匹配helloworld时得到的结果为  he,匹配到he时,下一个查找的数据为llo,而不是w,这一块网上百度吧
  • (?!...)  消极向前断言

此正则使用场景:

select 1,2,3 from 1,2,3   select 1,2,3 from 1,2,3   select 1,2,3 from 1,2,3    

只想匹配select和from之间的逗号,即可使用上述正则

自认为正则已经写的很好了,但是这个小玩意还是卡了一个小时,本来是调试好,后面在notepad++里面执行又报错,今天又可以了,后来发现是notepad内存不支持,发现超过2046个字符就会报此异常, 减掉一些数据就可以正常搜索了,

特此记录,共勉

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值