点击
蓝字【秋叶 Excel】
👆
发送【6】
免费领 1000+ 篇 Excel 精选教程!
本文作者:小爽
本文编辑:卫星酱
大家好,我是会一点数据处理的小爽~
前面我们讲过正则函数,了解到正则的插入、拆分用法。
(见文末)
之前都是利用正则匹配模式匹配字符,
比如:
\d 匹配一个数字
\w 匹配一个数字字母下划线,(在 ascii 模式下)
[a-c]匹配一个 a 到 c 之间的一个字符
但是有时会有一个特殊需求,
匹配指定内容之前或之后的位置
。
比如
(小爽)
,我们要匹配括号里面的内容,就可以通过匹配位置,进而获取内容。
(
位置
小爽
位置
)
开头结尾限定
开头结尾位置,也有对应的正则语法。
^
:用于匹配字符串的开头,表示一个模式应该出现在字符串的开头位置。
$
:在正则表达式中,表示匹配字符串的结尾位置。
正则表达式的「匹配」有两种概念:
一种是匹配字符,一种是匹配位置
,
这里的^,$就是匹配位置的。
利用^$我们可以判断字符串开头结尾是否存在某个字符串。
❶ 包含
如下图所示,需要判断字符串中是否包含小爽。
❷ 开头
判断开头是否存在小爽。
到这里,我们已经学会了开头结尾对应的正则语法,接下来我们来看看指定内容前后位置的正则语法。
指定内容
前后位置
如下图所示,我们需要提取中括号里的信息:
传统做法:
借助 TextSplit 拆分函数。
=TEXTSPLIT(A2,{"【","】"},,TRUE)
当然也可以使用正则函数,通过中括号取反来提取。
=REGEXEXTRACT(A2,"[^【】]+",1)
不过,这里来介绍一种新的做法。
来看看我们的字符串,可以发现,我们要提取的是中括号里的内容。
【小爽】【爽鸭】【Excel】
如果不匹配字符,只匹配位置,那么位置之间的内容,就是需要提取的内容。【
(位置)
内容
(位置)
】
问题来了!!!
有的,那就是
零宽断言
。
什么是零宽断言?
正则表达式中的零宽断言是一种特殊的结构,它在匹配的时候不会消耗字符,只是对匹配位置进行条件判断。
如同^代表开头,$代表结尾,零宽断言也有类似的作用,
它们只匹配某些位置,在匹配过程中,不占用字符,所以被称为"零宽"
。
主要有以下四个:
-
(?=pattern)零宽正向先行断言
-
(?<=pattern)零宽正向后行断言
-
(?!pattern)零宽负向先行断言
-
(?零宽负向后行断言
看起来好复杂?
看个例子你就懂了!
字符串:
❁小爽ω
正则语法:
(?<=❁)小爽(?=ω)
巧记(?<=):正则中有个左边的小于号。也就是查找小爽左边为❁的位置。
巧记(?=):没有小于号,也就是查找小爽右边为ω的位置。
返回结果:
小爽
知道了零宽断言,那我们再来看公式,就不难理解:
=REGEXEXTRACT(A2,"(?<=【).+?(?=】)",1)
【
位置
小爽
位置
】【
位置
爽鸭
位置
】【
位置
excel
位置
】
公式解析:
(?<=【).+?(?=】)
何为非贪婪匹配?
假如我们去掉?号,
就是贪婪匹配,它会尽可能多的匹配,就会匹配到结尾。
最
后的话
敲黑板:
本文中,小爽主要带领大家了解正则表达式中比较难的匹配位置。
其中,我们了解到:
-
^:匹配开头位置
-
$:匹配结尾位置
-
零宽断言:条件位置匹配(?<=,?=)
-
非贪婪模式:?尽可能少的匹配
文章比较难,但是掌握了匹配字符和位置,就相当于掌握了正则语法。
正则表达式是匹配模式,要么匹配
字符
,要么匹配
位置
。
关于匹配字符的文章大家可以戳:
WPS 中的正则
Excel 中的正则
大家在工作中还遇到过哪些 Excel 问题,也可以在留言区中聊聊~
说不定就成为我们后面的选题方向了。
如果你想变得更优秀,提升 Excel 水平,增强职场竞争力。