正则表达式是个好东西,希望人人可以掌握

今天下午我查了查班级人员,结果一查血压拉满,居然还有两个人还没加进来。这里为了保护大家隐私,我没有显示学生信息,我在后台是能看到的。

 那现在问题来了,系统是没法直接导出学生名单的,我最多只能如下选择并复制出混杂了昵称 真名和学号的信息。

 

 

 

 

 

想要匹配谁没加进来,只要能弄到现在已加入学生的名单,在excel中用vlookup来筛选一下即可。所以问题在于,如何在上面这堆混合物里面筛选出姓名列表或学号列表。

 

这里面就用到了一个强大的软件,Nodepad++。关于这个软件,有点点黑历史,有兴趣可以去查查,但这里我们只谈技术不谈政治,好东西还是要用的。

在查找界面中,有正则表达式这么个选项。(我用的是英文界面,跟中文稍稍有些区别)

 

 

 正则表达式的详细解释请各位百度谷歌,这里只做个简单介绍。简单来说,如果你要匹配的字符串非常有规律性,那就用正则表达式一下描述一下这个字符串的特性,那系统就会帮你按照规则全部匹配到。

因此,假如我现在想要在混合物中单独取出学号列表,那就只要把不符合的内容匹配到,并且全部替换成空字符串。

我用到的表达式如下:

(?<=[0-9]{12}\r\n)([\s\S]*?)(?=^[\s\S]{3,5}No.)

这个正则表达式的意义还请各位去查找一下,其实并不复杂。(思考一下,假如我想得到姓名列表,应该怎么写表达式?)

然后点全部替换,得到

 

 

 最后稍稍手工去头去尾即可。

 

在excle中,通过公式筛选一下。(公式啥意思什么用法也敬请各位自行百度)

 

 

 搞定收工,找人算账去。

 

要点:

1.能电脑全自动搞定的就千万不要人工傻乎乎一个一个去处理字符串。要有程序员思维

2.正则表达式的适用范围很广,在word中叫通配符,语法有点点不同但用法差不多。

3.能根据已有信息去做查找的,就千万不要去问别人。对于同样的问题,可能会有人选择群签到的方式来找出谁还没弄,这种方法费时费力,不建议这样做。

 

 

参考文献:

 正则表达式-语法教程 https://www.runoob.com/regexp/regexp-syntax.html

 不同风味的正则表达式语法教程(正则表达式在实现上会存在细微的差别,网上说Nodepad++用的是这个版本) https://www.boost.org/doc/libs/1_63_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

正则表达式在线测试工具 https://tool.oschina.net/regex/

posted @ 2020-10-09 20:26  lynnzixing  阅读(233)  评论(2编辑  收藏  举报