正则高级应用

案例:最近在使用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个字符就会报此异常, 减掉一些数据就可以正常搜索了,

特此记录,共勉


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部