金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

如何快速提取表格中的款式和尺码? wps中regexp超级正则提取函数的妙用

脚本之家

问题描述:我有一列登记较为混乱的产品及尺码的信息,想要将对应的款式与尺码分为N组对应关系,每两列为一组重新制表,有希望批量实现吗?

小编一开始也认为,这么混乱的数据,基本就别奢求能实现了,没有想到就用了一个正则表达式函数就搞定了,不禁感叹,正则真的挺强大。

如下图所示:

A列为混乱的商品信息。商品信息中包括但不限于:款式名称(有字母&数字格式、纯数字格式、字母&符号&数字格式)、颜色(汉字格式、符号&汉字格式)、尺码(尺码是大写字母,尺码范围是M~XXL)、以及一些位置不固定的其他字符(汉字、符号等)。

由于一个单元格中可能包含1~N组“款式”与“尺码”,所以我们想要重新提取并整理数据到新表。每两列为一组,分别是“款式”与“尺码”一一对应。这样横向布局分成N组。

正则表达式的英文是“regular sets”或“regular expressions”这两个术语。

“regular”是有“规则的、有规律的”意思。正则表达式就是用于描述字符串的规则和模式,通过特定的语法和符号来匹配符合某种规律的字符串。

虽然上面的数据很乱,但总体上来说:

都是“任意字符”+款式1+“任意字符”+尺码1+“任意字符”+款式2+“任意字符”+尺码2+“任意字符”,这样的模式构成。

并且款式与尺码的格式也比较固定,可能性不会出现的太多。

那么我们就利用这两点来构建正则表达式。

第一步:提取款式名称

输入REGEXP正则表达式函数:

=REGEXP(A2,"[A-z]+\d+-\d+")

第一种款式名格式为:字母+数字+“-”+数字 格式。那么我们即构建这种模式的正则表达式。

继续完善正则表达式:

=REGEXP(A2,"([A-z]+\d+-\d+)|[A-z]+\d+")

第一种格式的款式名正则式用“()”括起来,代表一个分组,可以确保不与后面正则式产生混乱。

用正则“或”逻辑符号“|”与第一种款式名格式连接,表示两种格式是“或”的关系,同时存在且提取。

继续完善正则表达式:

=REGEXP(A2,"([A-z]+\d+-\d+)|([A-z]+\d+)|\d+")

第三种款式名格式为:纯数字 格式。那么我们即构建这种模式的正则表达式。

第二种格式的款式名正则式用“()”括起来,代表一个分组,可以确保不与后面正则式产生混乱。

用正则“或”逻辑符号“|”与第二种款式名格式连接,表示三种格式是“或”的关系,同时存在且提取。

这样我们发现:

所有的 款式名 就都提取到了。

第二步:提取尺码

继续完善正则表达式函数:

=REGEXP(A2,"([A-z]+\d+-\d+)|([A-z]+\d+)|(\d+)|M|L|XL|XXL")

上一步 提取 款式名 格式的“纯数字”部分要用“()”括起来分组,确保不与后面的正则式产生混乱。

文章开始提干中已经明确了,尺码是M~XXL中的任意一种。

推荐阅读:交叉重复提取妙计! wps中REGEXP正则表达式函数用法