初级程序员走向高级程序员的关键一步-正则表达式

有点标题党了

但我确实发现很多工作一两年甚至三五年的人,不知道或者不习惯用正则表达式。 确实,不用它,你的程序/功能也是一样开发,比如用很多字符串处理函数。但是,一旦你用过它,单车变摩托后,你就欲罢不能了。

 

它到底用来干嘛那?,下图别人总结的挺好了。 

 

按我自己的理解那,这玩意能极大的提高你的工作效率。只要你的想象力有多丰富,它给你提升的效率就有多牛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",--机修完成

 

 

讲了半天,也没有正儿八经的讲讲正则表达式。

但是我觉得,授人以鱼不如授人以渔。知识就在那里,它是固定的。解决问题的思路,它是灵活的,与其枯燥讲语法,不如展示一下用它的一些骚操作,让人更有学习的动力

 

posted on 2020-10-21 10:17  陈傻傻周笨笨  阅读(137)  评论(0编辑  收藏  举报

导航