参考<<精通正则表达式>>一书对我们ETL log解析模块一个正则的优化
来源:互联网 发布:软件著作权怎么缴费 编辑:程序博客网 时间:2024/05/19 07:42
一句话需求:从ETL的log中提取出来一个ETL脚本落地了哪些临时表,日常数据库运维需要这些数据。
经过python程序处理后,提取到了如下的信息,这些在脚本中DELETE的都是临时表。
DELETE FROM DTEMP.L_SELL_PROXY_MARKETER_02 ALL;
可能大家疑惑这个很简单啊,不用正则,python完全可以处理。暂且不去讨论”前人”为何选择正则去处理。
先上”前人”的正则表达式:
.+\.(.+)\sALL;
分析该正则:
.+ .匹配换行以外的任意字符,而后面的+代表匹配优先量词,因此.+匹配了正行数据\. 匹配一个.符号,由于要匹配这个字符,前面.+不得不将他匹配到的吐出来,直到.的位置,这就产生了几十个回溯(.+) 同理依旧会吐下.以后所有的字符 \sALL; 又强迫(.+)吐出来很多字符,这又产生了回溯
这个正则总共回溯近40次 完成了匹配,虽然对我们的程序没有产生太大的效率问题,还是决定优化下这个正则。
该正则问题在于滥用. 和+
优化思考:
1:既然我只要表名(L_SELL_PROXY_MARKETER_02)那么我是否能将匹配的锚点定到.
这个位置
2:分组中的.何不换成\w
最后的正则:
(?=\.)\.(\w+).?
优化后的执行:
测试通过:
import reprint re.search(r"(?=\.)\.(\w+).?","DELETE FROM DTEMP.L_SELL_PROXY_MARKETER_02 ALL;").group(1)
0 0
- 参考<<精通正则表达式>>一书对我们ETL log解析模块一个正则的优化
- 精通 JS正则表达式一
- 正则表达式解析一
- 正则表达式 我们的泷泽萝拉
- 正则表达式的优化
- 正则表达式的优化
- 精通正则表达式读书笔记(一)
- 精通正则表达式一:元字符
- 半小时精通正则表达式!
- 半小时精通正则表达式
- 半小时精通正则表达式
- 半小时精通正则表达式
- 半小时精通正则表达式!
- 半小时精通正则表达式
- 《精通正则表达式》书评
- 《精通正则表达式》书评
- 半小时精通正则表达式
- 《精通正则表达式》书评
- scala REPL中加载第三方jar包
- 读取sd卡下图片,由图片路径转换为bitmap
- 阅读提升领导力——领导者应该多读书
- iOS 解决LaunchScreen中图片加载黑屏问题
- Nginx模块示例
- 参考<<精通正则表达式>>一书对我们ETL log解析模块一个正则的优化
- 【学习笔记】NGUI中为Popup Menu添加点击事件响应
- MAC下 WinShark 的Android抓包方法
- jstl中处理日期格式,小数,数字,百分比 fmt
- tableView的section不停留在顶部
- postgresql 数据类型转换,日期操作函数
- iOS倒计时,显示剩余天、时、分、秒
- 读《C程序设计语言》2E-3 [1~3]章
- windows下安装paramiko模块