数据库正则表达式(regexp正则函数,关键时刻能顶大用)

数据库正则表达式(regexp正则函数,关键时刻能顶大用)
regexp正则函数,关键时刻能顶大用

REGEXP函数是WPS表格中处理复杂字符串匹配的强大工具,特别适用于数据验证、提取、清洗和复杂搜索场景。掌握它能极大提升我们处理文本数据的灵活性。


正如所有强大的工具一样,能力越大,责任越大。REGEXP正则函数,关键时刻能顶大用,这不今天我们就用到了!



如下图所示:

A列为产品信息列。


每个单元格内的产品信息都有其固定的格式:"字母-数字"

但是每个单元格内产品的个数不尽相同。


我们想要通过B1:D1区域给出的已知的产品信息中的“字母”,将产品信息中的“数字”部分,提取到“字母”(第1行)与A列完整产品信息的交叉指定位置。




解决这个问题用到的正是REGEXP函数强大的“字符串描述”功能,将用正则描述出来的特定内容,利用自身“提取模式”提取出来。



第一步

正则提取


使用REGEXP正则表达式函数:

=REGEXP($A2,"-\d+")


\d+:表示任意长度的连续数字


因为例子中数字前面都有一个“-”,所以用:

-\d+:表示以“-”开头的任意长度的连续数字


那么我们利用REGEXP默认的提取模式(第3参数省略或0),依次将A2、A3、A4单元格中的“以“-”开头的任意长度的连续数字”逐个提取出来。

数据库正则表达式(regexp正则函数,关键时刻能顶大用)


到目前为止的缺陷是:

提取出来的数字并未与B1:D1区域的“字母”部分一一对应。




为了解决上面的缺陷,我们继续完善正则表达式部分:

=REGEXP($A2,B$1&"-\d+")


我们用B1:D1区域的各个“字母”与"-\d+"部分连接起来,就可以代表动态的、完整的产品信息“字母-数字”格式了。那么此时肯定能精准的在B1:D1区域各个“字母”下方指定交叉位置提取到"字母-数字"。


如果包含对应产品名称则显示对应的"字母-数字",否则显示错误值。




第二步

美化错误值


使用IFERROR函数:

=IFERROR(REGEXP($A2,B$1&"-\d+"),"")


以上一步REGEXP函数作为IFERROR的第一参数。

如果第一参数是错误值,则目标公式单元格强制返回空值。




第三步

替换


为了使返回的结果"字母-数字",只显示“数字”部分,我们选择使用SUBSTITUTE函数进行动态替换:

=SUBSTITUTE(IFERROR(REGEXP($A2,B$1&"-\d+"),""),B$1&"-","")


需要查找替换的原始数据(参数1):

IFERROR(REGEXP($A2,B$1&"-\d+"),"")


需要替换的原字符串(参数2):

B$1&"-"

表示非“字母-”部分(非数字部分)


需要替换为的新字符串(参数3):

""(表示空值)

替换为空值,可以理解为变相的删除。


文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读