Excel情报局
职场联盟Excel
大家好,今天我们来讲讲REGEXP正则表达式函数如何解决提取数字、汉字与字母。以前很棘手的问题,自从有了REGEXP函数后就变得非常简单。
如下图所示:
A2单元格是包含了数字、汉字与字母的混合内容。并且数字、汉字与字母并不是唯一的存在,可能包含多段。我们想要分别提取所有的汉字、数字与字母分别显示在B2、B4与B6单元格。
REGEXP函数是基于正则表达式,对复杂文本进行匹配、提取和替换的函数。
基本语法结构:
REGEXP(原始字符串,正则表达式,[匹配模式],[替换内容])
匹配模式是可选项,0或忽略表示提取,1表示判断是否包含,2表示替换。
替换内容是可选项,仅在匹配模式为2时有效,用来替换匹配的内容。
我们首先提取汉字:
=REGEXP(A2,"[一-龟]")
在Excel中正则表达式[一-龟]可以代表所有的汉字字符。所以我们使用REGEXP函数,用正则表达式[一-龟],省略第3参数,默认表示提取,提取A2单元格内所有的汉字字符。
返回的结果以数组溢出显示。我们发现所有的汉字字符以长度为1的形式显示在不同的单元格中。
本例数据源中的汉字字符被非汉字字符分成了多部分,比如本例中分成了两段,分别是“红色”和”绿色“。为了使“红色”和”绿色“两段分别连续,可以这样修改公式:
=REGEXP(A2,"[一-龟]+")
将[一-龟]加上+后,变成[一-龟]+,就可以连续显示提取内容了。
如果说,还想将提取到的“红色”和”绿色“放到一个单元格中,可以这样完善公式:
=TEXTJOIN(",",,REGEXP(A2,"[一-龟]+"))
用TEXTJOIN函数,用分隔符号逗号",",省略第二参即忽略空值单元格后将REGEXP函数的返回结果合并起来。
然后我们提取数字:
=REGEXP(A2,"[0-9]+")
在Excel中正则表达式[0-9]可以代表所有的数字字符。所以我们使用REGEXP函数,用正则表达式[0-9]+,省略第3参数,默认表示提取,提取A2单元格内所有的连续数字字符。
最后我们提取字母:
=REGEXP(A2,"[A-z]+")
在Excel中正则表达式[A-Z]可以代表所有的大写字母字符;正则表达式[a-z]可以代表所有的小写字母字符;正则表达式[A-z]可以代表所有的大写与小写混合字母字符。
若不确定A2单元格中的字母是大写还是小写或是同时存在,可以用正则表达式[A-z]表示。
所以我们使用REGEXP函数,用正则表达式[A-z]+,省略第3参数,默认表示提取,提取A2单元格内所有的连续字母字符。
〖往期知识点精彩超链接点击阅读〗