点菜还是下厨?正则表达式在不同应用场景的差异
Lv.1 新人创作者
刚上班,单位主管发给我一张EXCEL表格,里面统计了当前主营的水果名称。工作表中“水果名称”这一列数据录入极不规范,上级要求按“序号”、“水果中文名称”、“英文名称”、“原产地”等字段进行分列。表格如图:
WPS 表格内置了“REGEXP”函数,允许用户直接在单元格中使用正则表达式来完成复杂的文本提取、格式校验和字符替换。一个函数就能替代LEFT、MID、FIND、SUBSTITUTE等多个函数的组合,极大地提升了数据清洗的效率。凭借“REGEXP”函数的高效功能和灵活性,我顺利完成了数据清洗任务。
🥇“序号”列提取,编制函数公式
=REGEXP(A2,"\d+",0)
🥈“水果中文名称”列提取,编制函数公式
=REGEXP(A2,"[一-龟]+",0)
🥉“水果中文名称”列提取,由于有的水果英文名称之中有空格,需要用“TEXTJOIN”进行连接一下。编制函数公式
=TEXTJOIN(" ",,REGEXP(A2,"[a-zA-Z]+",0))
最终成果如下:
❓我刚拿起手机,想“摸鱼”刷个视频轻松一下,旁边的同事小白走了过来。他问我:“老兄,我也刚学习正则表达式,这个‘REGEXP’函数与WPS QUERY编辑器里使用正则表达式一样吗?”
💡我回答:“不一样,‘REGEXP’函数运用在WPS表格单元格公式中,天生支持正则表达式,通过参数不同对一个单元格的字符串实现“提取”、“判断”、“替换”等功能,结果直接落在WPS单元格里。WPS QUERY 编辑器提供的是一种步骤式数据清洗环境,处理的是“一张表/一个查询”,不能直接支持正则表达式,要通过 M 语言的 ‘Text’ 系列函数或自定义函数才能间接实现‘REGEXP’函数同样功能,改完点“刷新”才出结果,正则表达式写法并不完全相同。”
我说完,决定使用WPS QUERY完成同样的工作。
操作步骤:
一、单击编辑区任意区域,在功能区点击“获取数据”,选择“从表格/区域获取(T)”,启动WPS QUERY编辑器。
二、在WPS QUERY编辑器中,新增“自定义“列。
三、在弹出的对话框中,修改列名为“序号”。编制提取“序号”数据的公式,使用M语言的“TEXT”函数。编写公式:
=Text.Select([水果名称], {"0".."9"})
操作完成:
四、新增“自定义列”,修改列名为“水果中文名称”。编制提取“水果中文名称”数据的公式,使用M语言的“TEXT”函数。编写公式:
=Text.Select([水果名称], {"一".."龟"})
操作完成:
五、新增“自定义列”,修改列名为“英文名称”。编制提取“英文名称”数据的公式,使用M语言的“TEXT”函数。由于有些水果的英文名称有空格,正则表达式编写公式时必须加上空格。编写公式:
=Text.Select([水果名称], {"a".."z","A".."Z"," "})
操作完成:
六、数据列位置调整。将“水果名称”列删除,“原产地”列移到最后一列。
选择输出数据,默认输出到当前工作表。
操作完成:
我对小白说:“同样是应用正则表达式干一样的事,打比方我们去饭馆吃饭,‘REGEXP’函数是偶尔去一次,人不多,坐下就点菜,菜单上有什么随便点,吃完就走人;使用WPS QUERY编辑器则好像你领了一大帮人,到菜市场买完了食材,亲自写菜谱,到后厨操刀烹制,力求众人吃的好满意。今天买的东西用不完,以后还常来。”
🔍不同场景差异:
动作 | 动嘴点单拿筷子就吃(REGEXP) | 动刀备菜亲自下厨(QUERY 编辑器) |
入口在哪 | 单元格公式栏 | 数据选项卡 → 查询编辑器 |
怎么写规则 | 引号里写正则,=REGEXP(...) | M 语言函数写步骤,正则要自建函数 |
多久出结果 | 回车即出,速度快 | 搭好流水线,关闭加载才出,改完刷新 |
改需求 | 改公式里那串正则公式写法 | 改M语言操作步骤或自定义函数语句,重刷 |
适合谁 | 饿了马上吃(临时清洗当前表) | 备一周的饭(月度报表/多源合并) |
频率 | 偶尔 | 多次,重复 |
小白说:“你一说去吃饭,感觉更好理解了!”
我对他说:“净想着吃,WPS社区有位叫张俊的大神说得好,‘要想下班早,表格必须用的好!’,小伙,你要努力哟!”
小白激动地说“对对对,我要学好表格函数,好早点下班去跟女朋友约会。”然后走了。
旁边工位上的一位大姐转过头笑着对我说:“珑胜,尽忽悠小青年。我看你心里真正想的是:‘珑胜要想下班早,小白表格必须好’”
所有人都笑了。
哈哈!😁😁😁😁😁😁
Lv.3 优质创作者
Lv.1 新人创作者
Lv.1 新人创作者
Lv.3 优质创作者