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

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