当前位置:首页 > 技术分析 > 正文内容

regexp正则提取+wraprows数组重构,从混乱文本到结构化表格转换

我们继续上一篇文章,提供一种新的解题思路。

还用昨天文章中案例的数据源

由于微信中的信息是一连串的文本字符,那么当我们复制粘贴到Excel表格中的时候,肯定会放置到一个单元格中显示,比如A1单元格的数据就是我们复制粘贴过来的。


数据的格式是:“名称与数量,名称与数量......”,即若干个“名称与数量”以逗号为分隔符连接在一起了。且“名称与数量”之间没有明显的分隔符。


我们要将其整理到C2:D12区域,即一列名称,一列数量,每行为一组对应的数据。




根据数据源的实际情况,下面是公式整体结构:

=WRAPROWS(REGEXP(A1,"\p{Han}+|\d+"),2)


核心逻辑:

先提取文本中的汉字和数字,再将结果按两列重组。



下面是分步拆解说明。



第一步:正则提取


输入函数:

=REGEXP(A1,"\p{han}+")


正则表达式

\p{Han}+:作用是匹配连续的中文字符。比如从“白菜400”中提取“白菜”。


得到一整行的数组溢出结果:

{"白菜","头菜","萝卜","白萝卜","土豆","土胡萝卜","净胡萝卜","茭瓜","茄子","茄王"}


各个提取到的蔬菜名称分布在一行不同单元格中。




继续完善正则表达式:

=REGEXP(A1,"\p{han}+\d+")


正则表达式:

\d+:作用是匹配连续的数字。比如从“白菜400”中提取“400”。


此时由于和\p{han}+组合使用,提取到的是蔬菜与数量的结合体。


各个提取到的蔬菜+数量分布在一行不同单元格中:

{"白菜400","头菜3","萝卜3","白萝卜2","土豆3","土胡萝卜2","净胡萝卜1","茭瓜2","茄子1","茄王1"}




继续完善正则表达式:

=REGEXP(A1,"\p{han}+|\d+")


|:逻辑“或”符号。


将“|”放置到“\p{han}+”与“\d+”之间:

可以交替匹配汉字和数字,也可以同时自动跳过其他字符,如中文逗号、空格等。


这样蔬菜名称、数量会全部分布在一行不同单元格中:

{"白菜","400","头菜","3","萝卜","3","白萝卜","2","土豆","3","土胡萝卜","2","净胡萝卜","1","茭瓜","2","茄子","1","茄王","1"}




有网友反馈诉求,如果数量含有小数咋办


由于本例中为蔬菜数量,从原则上讲,不会出现小数。但我们假设存在小数,给出他解决方案:

=REGEXP(A1,"\p{han}+|\d+\.\d+|\d+")


\d+\.\d+:表示小数模式

\d+:表示整数模式

\d+\.\d+|\d+:表示小数或整数

\p{han}+|\d+\.\d+|\d+:表示汉字或小数或整数




第二步:数组重组


WRAPROWS函数用于将向量数据按指定的列数重新排列,构建新数组。


WRAPROWS函数结构:

=WRAPROWS(数组, 列数)


输入公式:

=WRAPROWS(REGEXP(A1,"\p{han}+|\d+"),2)


将REGEXP函数提取的线性数组,按行优先顺序转换为2列。最终就是每行放置2个元素,形成“名称+数量”结构。




重组逻辑

将线性数组转换为一维表格:




总结流程:

文本清洗:通过正则提取关键信息,剔除干扰符号。

结构重组:将线性数据转换为一维表格,适配Excel单元格布局。

此公式通过精准的正则匹配和数组重组,实现了从混乱文本到结构化表格的高效转换。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4577.html

标签: 正则 ?=
分享给朋友:

“regexp正则提取+wraprows数组重构,从混乱文本到结构化表格转换” 的相关文章

深度解析!AI智能体在To B领域应用,汽车售后服务落地全攻略

在汽车售后服务领域,AI智能体的应用正带来一场效率和专业度的革命。本文深度解析了一个AI智能体在To B领域的实际应用案例,介绍了AI智能体如何通过提升服务顾问和维修技师的专业度及维修效率,优化汽车售后服务流程。上周我分享了AI智能体+AI小程序To C的AI应用场景《1000%增长!我仅用一个小时...

Gemini应用在Android上广泛推出2.0闪电模式切换器

#头条精品计划# 快速导读谷歌(搜索)应用的测试频道在安卓设备的双子应用中推出了2.0闪电实验功能,现已向稳定用户开放。双子应用通过谷歌应用运行,目前推出的15.50版本中,用户可通过模型选择器体验不同选项,包括1.5专业版、1.5闪电版和2.0闪电实验版。2.0闪电实验模型提供了更快的响应速度和优...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条件动态地过滤数据,使数据分析和报告制作变得更加高效和准确。本文将详细介绍FILTER函数的用法,并提...

SpringCloudalibaba+Vue开发仿社交小程序-青牛白马七香车

Spring Cloud Alibaba和Vue是当今开发领域中最为流行的技术组合之一。本文将介绍如何使用Spring Cloud Alibaba和Vue开发仿社交小程序。download: https://www.97yrbl.com/t-1632.html项目概述本项目是一个仿社交小程序,包括用...

一文看懂企业微信开发简易教程

为让开发者快速理解开发流程,本篇章展示如何一步步设计一个能与企业后台互动的自建应用。添加自建应用登录企业微信管理端 -> 应用与小程序 -> 应用 -> 自建,点击“创建应用”,设置应用logo、应用名称等信息,创建应用。创建完成后,在管理端的应用列表里进入该应用,可以看到agen...

同步和异步的区别是什么,同步和异步的代码

同步和异步的区别在于程序执行操作时是否需要等待操作完成。同步操作意味着程序在执行一个操作时会一直等待操作完成才继续执行下一个操作,而异步操作则是指程序执行一个操作时,不会等待操作完成,而是立即返回,继续执行后面的操作。以下是同步和异步的代码示例:同步代码示例:console.log("sta...