初级程序员走向高级程序员的关键一步-正则表达式
有点标题党了
但我确实发现很多工作一两年甚至三五年的人,不知道或者不习惯用正则表达式。 确实,不用它,你的程序/功能也是一样开发,比如用很多字符串处理函数。但是,一旦你用过它,单车变摩托后,你就欲罢不能了。
它到底用来干嘛那?,下图别人总结的挺好了。
按我自己的理解那,这玩意能极大的提高你的工作效率。只要你的想象力有多丰富,它给你提升的效率就有多牛X
基础我就不讲了,有太多教程可以看了,讲的肯定比我好。https://www.runoob.com/regexp/regexp-tutorial.html
下面讲讲我最近的一个案例
我做一个服务器,接收各个客户端发过来的JSON串消息,解析JSON串,把里面的内容保存到数据库。很简单明了的一个过程。但问题是,JSON串可能的格式很多,比如有100种。。。
{ "cmd": "repair_complete_msg",--机修完成 "hub_sn": "80000111", --网关编号 "dev_sn": "00000001", --采集器编号 "mach_id": "0001",--机台编号 "worker_id": "1012",--机修工ID "time": "2019-12-25 14:48:25.111" --时间 }
如上,是其中一种,我处理过程大概是,1 定义相应的类 , 2 JSON串反序列化为相应类的对象 3 得到对象的属性值,插入数据库 。对应的类定义如下
public class repair_complete_msg { public string cmd { get; set; }// "repair_complete_msg", --机修完成 public string hub_sn { get; set; }// "80000111", --网关编号 public string dev_sn { get; set; }// "00000001", --采集器编号 public string mach_id { get; set; }// "0001", --机台编号 public string worker_id { get; set; }// "1012", --机修工ID public string time { get; set; }// "2019-12-25 14:48:25.111" --时间 }
如果有100种字段不一的JSON格式,单是类定义我就要搞眼花了
下面我们用正则表达式来一顿骚操作
首先在notepad++(任何支持正则替换的编辑器都行)里打开这个JOSN。
step1 找到所有 "cmd": 这样格式的,他们对应一个类的属性 找他们的正则表达式为 "([^:|^"]*)": ,意思是 " 开头 ": 结尾,中间不能有 " 并把括号()里面匹配内容标记为 $1
替换为public string $1{ get; set; } //
替换结果如下
省力把?这就是你不加班的秘诀
假设我们每一个JSON串都有一个共有属性 ,我们把这个XXXXX拿出来作为类名。这样,这个类的生成就是全自动了,如何做那? 点一下下图种的替换,类名就出来了。
"cmd": "XXXXX",--机修完成
讲了半天,也没有正儿八经的讲讲正则表达式。
但是我觉得,授人以鱼不如授人以渔。知识就在那里,它是固定的。解决问题的思路,它是灵活的,与其枯燥讲语法,不如展示一下用它的一些骚操作,让人更有学习的动力