首发于 Dirty Work办公技巧
整理五万条银行流水居然只需要30s?正则法则轻松搞定

整理五万条银行流水居然只需要30s?正则法则轻松搞定

// Dirty Work互助者计划

为了让大家在办公中更好地处理各类Dirty Work,案牍AutoDocs会通过「Dirty Work互助者」这个专栏,分享各类使用提高效率、解决Dirty Work的小妙招,让你专注于更有价值的工作!
本栏目汇集了一群对高效率工具充满好奇、热情的年轻人们,通过案牍AutoDocs的平台连接,大家一起互动、交流、学习,在互助中成长。


Excel表格匹配是我们处理银行流水过程中经常需要处理的工作。

但是表格的格式、内容并不是固定且完全一致的。

本期文章将介绍正则表达式的用法,并通过实战演练,教你如何快速上手,轻松解决Dirty Work!


整理银行流水的难题在于要把银行日记账和流水账按照时间、金额、对方户名一一匹配,如果只是采取普通加辅助列整理出来的只能将时间和金额匹配起来,但是却没办法匹配到对方户名。

对账是要将相同时间、相同账户、相同金额的记录在两个工作表中进行匹配。

但我们经常会遇到的情况是:现金日记账里只有摘要,但没有银行账户这个关键信息。


首先,我们来观察银行流水账现金日记账两张表格的结构:

表1:银行流水账
表2:现金日记账

时间+金额,满足两个条件可以通过辅助列来完成匹配

但账户名怎么关联?

银行流水账有账户名这个关键字,但是现金日记账里却没有,怎么处理?


你可能会说:“嘿嘿,分列不就解决了?用分隔符"-"对日记账的摘要进行分列操作,再用VLOOKUP匹配,轻松解决问题。”

但真实情况的表格一般如下所示:

表述五花八门,格式乱七八糟

要将摘要进行分列,提取出银行账户名的解决思路是对的,但是怎么确定在哪个位置进行分割提取关键信息

Excel的分列功能面对形形色色的表述爱莫能助,Power Query的分列好像也不太适用。

面对这种棘手的情况,我们可以借助正则表达式呀!

// 什么是正则表达式?

正则表达式(regular expression):是一种描述字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

例如:autodoc+s,可以匹配 autodocs、autodoccs、autodoccccccs 等,+ 号代表前面的字符必须至少出现一次。

因此,正则表达式可以简单粗暴地理解为一种匹配方法:我们告诉计算机一段内容的内在规律(比如说手机号的11位数字)和我们需要的内容结构,计算机将会帮我们去做相应的匹配,并将找到的结果返还给我们。

相比之下,VLOOKUP的局限性在于:只能告诉计算机:“帮我找Andy这个单词”,而不能跟计算机说:“帮我找出所有A开头的单词。”

划重点:正则表达式不是一个具体的内容,它是一个抽象的规律。

正则表达式的基本语法:正则表达式一个字符代表一个位置,一组[]代表一个范围,一组{}代表字符出现次数。

下面以匹配日期为例进行操作演示,试试我们刚学会的正则表达式。

基于不同的记录习惯,我们在Excel表中遇到各种各样的情况。看看上面的日期写法,#¥@%&*……。

如果让Excel自动提取每一个单元格里的日期内容,估计Excel都会崩溃。


那么我们人类又是怎么认出这些日期的呢?

因为我们知道,一般四个数字表示年份,两个数字的表示月份或者日号,中间加一些停顿符号或者文字分隔符,继而读出了具体的日期。

那我们就把这个内在的规律通过代码形式体现出来!

第一步:提取年份

年份的取值是由四个数字构成的,数字的取值范围是0-9,取值范围用[],字符出现次数用{},因此年份的正则表达式可以写为

[0-9] {4}

等下,年份可能只有两位数字!

所以年份的规律应该是,最少2个数字,最多4个数字!跟字符出现次数有关的,还是用{},可是怎么写呢?

[0-9]{2,4}表示,0-9范围内的数字最少出现两次,最多出现四次。

所以{}内的参数可有两个,逗号前的参数表示最少出现的次数,逗号后的参数表示最多出现的次数。

如果{}内参数只有一个,则表示出现的固定次数。

第二步:提取月份

根据大家的习惯,年份后面会出现天然的文字分隔符。比如“年”、“/”、“-”或者“.”等符号,也就是说年份后面紧跟的字符是这几个字符中的某一个,用[]限定范围就可以啦!

注意,这里需要把'-'放在最后,否则会出错,因为'-'放在两个字符中间表示“至”的意思,0-9,0至9。因此如果要表示'-'字符本身,要把'-'放在最后,防止误会~

[0-9]{2,4}[年./-]

第三步:提取日期

我们已经提取了月份前面的所有内容啦,顺着这个思路一口气把月份和日号也拿下吧!

[0-9]{2,4}[年./-][0-9]{2}[月./-][0-9]{1,2}[日号]

咦,“21年12.12”没有高亮,为什么?

因为我们告诉计算机,最后一个字符是日或者号里面的其中一个,而21年12.12的结尾并不是“日”或者“号”那该怎么办呢?

实际上我们想表达的是,如果最后一位有字符就是在日和号里面二选一,没有也行。用{0,1}表达出现次数就好啦!

[0-9]{2,4}[年./-][0-9]{2}[月./-][0-9]{1,2}[日号]{0,1}

第四步:简化表达式

你看现在的这个表达式是不是有点冗长呢?
悄悄告诉你,正则表达式中含有丰富的元字符,我们可以直接用这些元字符代替

这时,上述日期的正则表达式可以简化为:

\d{2,4}[年月日号./-]\d{0,2}[月日号./-]?\d{0,2}[月日号./-]?

看似复杂的正则表达式,其实也没有想象中那么难对吧!


// 实战演练

回到文章开头提出的问题,那要怎么通过正则表达式在五万条数据中快速提取出人名和公司名呢?

不难发现,即便每个人的表达习惯不一样,一个完整的语句会包括主体、事件、对象这些基本要素,针对上述要素描述,我们可以试着找到一些内在规律:

人名前面可能会有其所属部门名称(xx部、BP中心-xx、xxxx项目组)

正则表达式:'^.{1,3}部|组'

公司名前面可能会有“-”,且公司名的结尾都是“公司”(受篇幅的限制,数据只展示了一部分,法人名称结尾一般是“公司”或者“企业”字样)

正则表达式:'-.+(公司)|(企业)$'

摘要中的动词大多为“支付”、“报销”、“申请”,而动词前面基本是人名

费用名称一般为“转移费”、“快递费”、“工程款”,即xx费,xx款

正则表达式:'(支付)|(报销)|(申请)','.+[费款]'

Tada!最后将选中的文本一键替换为空值就成功“清洗”出了我们想要的数据啦~

感谢看到这里,不知道有没有学会呢?

如果刚好遇到需要整理数据的情况就立马应用起来吧!


关于我们

案牍AutoDocs是一个助力专业服务提供者提高工作效率的自动化平台。

一群来自律所、投行以及科技公司的年轻人,希望将规则与技术相结合,帮助专业服务提供者摆脱Dirty Work

从法律行业出发,我们希望能够为大家提供一种跨时代的工作方式,帮助专业服务提供者提高生产力,将机械重复的工作自动化。

无论是法律、合规、税务以及金融领域还是其他领域的专业服务提供者,都能够通过案牍AutoDocs将专业知识转化成自动化服务应用。

- END -

代做工资流水公司合肥在职证明泰州办薪资流水潍坊车贷工资流水 查询襄阳银行对公流水公司镇江签证流水多少钱商丘离职证明费用盐城制作银行流水孝感制作背调银行流水厦门签证流水打印海口企业对私流水代做西宁自存流水多少钱宁德银行流水单办理湖州签证工资流水报价商丘背调银行流水开具成都背调银行流水打印舟山制作签证工资流水衡阳贷款流水多少钱湖州房贷工资流水 模板孝感签证银行流水 多少钱三亚查入职工资流水南阳做工资流水单黄冈企业贷流水潮州办理贷款工资流水廊坊工资流水app截图查询洛阳薪资流水制作泰安银行流水图片荆州查企业贷流水岳阳工资流水app截图制作汕头银行流水账打印淮安制作入职银行流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化